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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jmeter正则表达式提取器的用法和正则「建议收藏」

    jmeter正则表达式提取器的用法和正则「建议收藏」我们再使用jmeter请求接口时,碰到一些业务流程性的接口改怎么办,比如,我一个发布内容的接口需要用到登录接口返回的token加到请求上去才能发布内容,那在jmeter上该是如何实现的咧?这里介绍的是jmeter的正则表达式提取器1,把正则表达式添加到需要提取返回内容的http请求里,添加步骤是,,右键http请求–添加–后置处理器–正则表达式处理器2,在正则表达式提取器配置设置页里,1)要检查的响应字段:相当于是要提取哪个位置的内容数据……

    2025年10月24日
    8
  • 富文本编辑器kindeditor配置

    富文本编辑器kindeditor配置<!–富文本编辑器kindeditor配置↓–><linktype=”text/css”rel=”stylesheet”href=”kindeditor/themes/default/default.css”/><linkrel=”stylesheet”href=”kindeditor/plugins/code/prettify.cs…

    2022年10月12日
    2
  • 关于WinExec和System的比较

    关于WinExec和System的比较http://nt04.blog.163.com/blog/static/3297804920116246622829/WinExec是一个WIN32API,它的第一个参数必须包含一个可执行文件名,SYSTEM是C库函数,它接受一个DOS命令。你可以这样:WinExec(“command/CdirC:\>dir.txt”,SW_HIDE);system

    2022年7月27日
    9
  • 关于ContentPlaceHolder与Content控件

    关于ContentPlaceHolder与Content控件定义:ContentPlaceHolder控件:在ASP.NET母版页中定义内容区域。Content控件:保存文本、标记和服务器控件以呈现给母版页中的ContentPlaceHolder控件。两者关系:ContentPlaceHolder控件在母版页中定义相对内容区域,并呈现在内容页中找到的相关的Content控件的所有文本、标记和服务器控件。

    2022年7月13日
    20
  • Docker安装Mysql8和sqlyong连接报错2058的解决方法[随笔记录]

    Docker安装Mysql8和sqlyong连接报错2058的解决方法[随笔记录]

    2021年7月13日
    109
  • 44页智慧生活社区+智慧小区建设方案[通俗易懂]

    44页智慧生活社区+智慧小区建设方案[通俗易懂]喜欢文章可以【转发➕评论】,关注公众号“智慧方案文库“,私信获取解决方案。本文章引用的资料均通过互联网等公开渠道合法获取,仅作为行业交流和学习使用,并无任何商业目的。其版权归原资料作者或出版社所有,作者不对所涉及的版权问题承担任何法律责任。若版权方、出版社认为本文章侵权,请立即通知作者删除。更多方案【2021】77页数字李生智慧园区解决方案(附下载)【2021】102页新一代数字化转型信息化总体规划方案(附下载)【2021】85页5G+物联网智慧校园解决方案(附下载)【2021】60页智慧城市运营管理平台

    2022年10月17日
    5

发表回复

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

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