HDU 2544 最短路 SPFA 邻接表 模板

HDU 2544 最短路 SPFA 邻接表 模板

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

Problem Description
在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt。可是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以如今他们想要寻找最短的从商店到赛场的路线,你能够帮助他们吗?

 

Input
输入包含多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包含3个整数A,B,C(1<=A,B&lt;=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员须要C分钟的时间走过这条路。

输入保证至少存在1条商店到赛场的路线。

 

Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
 

Sample Input
   
   
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0

 

Sample Output
   
   
3 2 代码:
<pre name="code" class="cpp">#include<iostream>
#include<cstdio>
#include<cstring>
#define maxx 99999999
#include<queue>
using namespace std;
struct node{
   int to,w;
   int pre;  //表示 同一起点的前一条边
}edge[20005];
int vis[505],dis[505];
int next[20005];
int m,n;
int tot;
void addedge(int u,int v,int w)
{
    int j,t=0;
    for(j=next[u];j!=-1;j=edge[j].pre)   //去重边
    {
        if(v==edge[j].to&&w>=edge[j].w)
        {
            t=1;
            break;
        }
    }
    if(t==1)
        return;
    edge[tot].to=v;
    edge[tot].w=w;
    edge[tot].pre=next[u];//  邻接表的存储
    next[u]=tot++;       //
    edge[tot].to=u;  //构造反向边
    edge[tot].w=w;
    edge[tot].pre=next[v];
    next[v]=tot++;
    return;
}
int spfa()
{
    queue<int>q;
    int now;
    for(int i=1;i<=m;i++)
    {
        vis[i]=0;
        dis[i]=maxx;
    }
    dis[1]=0;
    vis[1]=1;
    q.push(1);
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        vis[now]=0;        //反向边
        for(int i=next[now];i!=-1;i=edge[i].pre)  //遍历同一起点的全部边(从最后一条边開始)
        {
            int v=edge[i].to;
            if(dis[v]>dis[now]+edge[i].w)
            {
                dis[v]=dis[now]+edge[i].w;
                if(!vis[v])
                {
                    vis[v]=1;
                    q.push(v);
                }
            }
        }
    }
    return dis[m];
}
int main()
{
    while(~scanf("%d%d",&m,&n))
    {
        if(m==0&&n==0)
        break;
        tot=1;
        memset(next,-1,sizeof(next));
        while(n--)
        {
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            addedge(a,b,c);
        }
        int s=spfa();
        cout<<s<<endl;
    }
    return 0;
}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117984.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • fedora 12 QQ 的安装使用过程「建议收藏」

    fedora 12 QQ 的安装使用过程「建议收藏」一 下载地址:http://im.qq.com/qq/linux/download.shtml  由于装的是fedora  12于是下linuxqq-v1.0.2-beta1.i386.rmp直接双击安装就可以了。安装完后,应用程序出现在Internet下的腾讯QQ。二 成功登录后,不小心按了最小化后,郁闷的发现找不到qq图标。其实解决很简单,在面板上右击,选择添加到面板

    2022年9月2日
    3
  • navigator.appName检测浏览器

    navigator.appName检测浏览器functiondectionBrower(){varbrowerName=navigator.appName;alert(browerName);}//谷歌浏览器显示Netscape//火狐浏览器显示Netscape经测试我发现Chrome,Firefox,Safari,opera,就连IE浏览器用navigator.appName检测都是Netscape…

    2022年9月12日
    0
  • 开心农场2激活成功教程版无限金币钥匙_开心农场2乡村度假内购激活成功教程版

    开心农场2激活成功教程版无限金币钥匙_开心农场2乡村度假内购激活成功教程版 最近开心农场非常火,同学用C#模拟鼠标点击操作做了一个小外挂,但是这样做有如下缺点:1、计算机不能做其他事情,2、必须开着浏览器,3、对所有好友点一遍的时间太慢,4、对于开发者来说技术含量低了点,呵呵。 所以我尝试着改进这种实现,我的想法是:不用开启浏览器,直接运行一个应用程序,该程序将自己伪装成一个浏览器,与服务器连接,并发送浇水、除虫等命令。这样,甚至可以使用多线程向服务器发送命令,无需…

    2022年9月13日
    0
  • centos7系统更新命令_centos 更新

    centos7系统更新命令_centos 更新1.查看网络IP ifconfig2.下载命令 wget+网址3.安装 yum-y install + 目标4.删除文件 sudo rm 文件所在目录/目标强制删除文件 rm -f删除目录 rm -rf5.复制一个文件到另一个文件夹sudo cp /文件夹/文件 /另一个文件夹6.对一些文件进行读写sudo vim 文件名7….

    2022年8月19日
    4
  • mac idea 2021激活码(破解版激活)「建议收藏」

    mac idea 2021激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    700
  • TimeTrack_cycletime和takttime的区别

    TimeTrack_cycletime和takttime的区别使用TimerTask可以方便的实现定时任务的功能,但是如果使用不当,反而会带来隐患。在使用TimerTask时,TimerTask中的代码必须要做异常处理,否则产生异常的时候,就挂掉了。特别像使用MQ发送数据的时候,不会显式的要求你捕获异常,如果你忘记了,那么在某个时刻MQ异常的时候(比如网络异常),在发送数据到MQ失败的时候,TimerTask就挂掉了。比如如下代码:Appli…

    2025年5月30日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号