hdu 2544 最短路

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<=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
 
 
 
思路:这题是最短路模板题,我这里用dfs暴力搜以及三种算法Floyd,Dijkstra,Bellman-ford都写了一遍,可以看看......
 
 
dfs暴力搜索
 
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<map>
 7 #include<set>
 8 #include<vector>
 9 using namespace std;
10 #define ll long long 
11 #define dd cout<<endl
12 const int inf=99999999;
13 const int mod=1e9+7;
14 const int maxn=505;
15 const int maxm=1e4+7;
16 int n,m;
17 int x,y,z;
18 int e[maxn][maxn];
19 int book[maxn]={0};
20 int minn=inf;
21 void init()
22 {
23     for(int i=0;i<maxn;i++)
24         for(int j=0;j<maxn;j++)
25             i==j?e[i][j]=0:e[i][j]=inf;
26 }
27 void dfs(int cur,int dis)
28 {
29     if(dis>minn)
30         return ;
31     if(cur==n)
32     {
33         if(dis<minn)
34             minn=dis;
35         return ;
36     }
37     for(int i=1;i<=n;i++)
38     {
39         if(book[i]==0&&e[cur][i]!=inf)
40         {
41             book[i]=1;
42             dfs(i,dis+e[cur][i]);
43             book[i]=0;
44         }
45     }
46     return ;
47 }
48 int main()
49 {
50     while(cin>>n>>m)
51     {
52         if(!n&&!m)
53             return 0;
54         init();
55         memset(book,0,sizeof(book));
56         for(int i=0;i<m;i++)
57         {
58             scanf("%d%d%d",&x,&y,&z);
59             e[x][y]=z;
60             e[y][x]=z;
61         }
62         book[1]=1;
63         minn=inf;
64         dfs(1,0);
65         printf("%d\n",minn);
66     }
67     return 0;
68 }
View Code

 

Floyd

 

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstdio>
 6 #include<map>
 7 #include<set>
 8 #include<vector>
 9 using namespace std;
10 #define ll long long 
11 const int inf=99999999;
12 const int maxn=10002;
13 int n,m;
14 int x,y,z;
15 int e[maxn][maxn];
16 int dis[maxn];
17 int book[maxn];
18 void init()
19 {
20     for(int i=1;i<=n;i++)
21         for(int j=1;j<=n;j++)
22             i==j?e[i][j]=0:e[i][j]=inf;
23 }
24 int main()
25 {
26     while(scanf("%d%d",&n,&m)!=EOF)
27     {
28         if(!n&&!m)
29             return 0;
30         init();
31         for(int i=1;i<=m;i++)
32         {
33             scanf("%d%d%d",&x,&y,&z);
34             e[x][y]=z;
35             e[y][x]=z;
36         }
37         for(int i=1;i<=n;i++)
38             dis[i]=e[1][i];
39         for(int k=1;k<=n;k++)
40         {
41             for(int i=1;i<=n;i++)
42             {
43                 for(int j=1;j<=n;j++)
44                 {
45                     if(e[i][j]>e[i][k]+e[k][j])
46                         e[i][j]=e[i][k]+e[k][j];
47                 }
48             }
49         }
50         printf("%d\n",e[1][n]);
51     }
52     return 0;
53 }
View Code

 

Dijkstra

 

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstdio>
 6 #include<map>
 7 #include<set>
 8 #include<vector>
 9 using namespace std;
10 #define ll long long 
11 const int inf=99999999;
12 const int maxn=10002;
13 int n,m;
14 int x,y,z;
15 int e[maxn][maxn];
16 int dis[maxn];
17 int book[maxn];
18 void init()
19 {
20     for(int i=1;i<=n;i++)
21         for(int j=1;j<=n;j++)
22             i==j?e[i][j]=0:e[i][j]=inf;
23 }
24 int main()
25 {
26     while(scanf("%d%d",&n,&m)!=EOF)
27     {
28         if(!n&&!m)
29             return 0;
30         init();
31         for(int i=1;i<=m;i++)
32         {
33             scanf("%d%d%d",&x,&y,&z);
34             e[x][y]=z;
35             e[y][x]=z;
36         }
37         for(int i=1;i<=n;i++)
38             dis[i]=e[1][i];
39         book[1]=1;
40         for(int k=1;k<=n-1;k++)
41         {
42             int minn=inf,temp;
43             
44             for(int i=1;i<=n;i++)
45             {
46                 if(book[i]==0&&dis[i]<minn)
47                     minn=dis[temp=i];
48             }
49             book[temp]=1;
50             for(int j=1;j<=n;j++)
51             {
52                 if(book[j]==0&&e[temp][j]<inf)
53                 {
54                     if(dis[j]>dis[temp]+e[temp][j])
55                         dis[j]=dis[temp]+e[temp][j];
56                 }
57             }
58         } 
59         printf("%d\n",dis[n]);
60         memset(book,0,sizeof(book));
61     }
62     return 0;
63 }
View Code

 

Bellman-ford

 

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstdio>
 6 #include<map>
 7 #include<set>
 8 #include<vector>
 9 using namespace std;
10 #define ll long long 
11 const int inf=99999999;
12 const int maxn=10002;
13 int n,m;
14 int x,y,z;
15 int e[maxn][maxn];
16 int dis[maxn];
17 int u[maxn];
18 int v[maxn];
19 int w[maxn];
20 int book[maxn];
21 void init()
22 {
23     for(int i=1;i<=n;i++)
24         for(int j=1;j<=n;j++)
25             i==j?e[i][j]=0:e[i][j]=inf;
26 }
27 int main()
28 {
29     while(scanf("%d%d",&n,&m)!=EOF)
30     {
31         if(!n&&!m)
32             return 0;
33         init();
34         for(int i=1;i<=m;i++)
35         {
36             scanf("%d%d%d",&x,&y,&z);
37             e[x][y]=z;
38             e[y][x]=z;
39             u[i]=x;
40             v[i]=y;
41             w[i]=z;
42         }
43         for(int i=m+1;i<=2*m;i++)
44         {
45             u[i]=v[i-m];
46             v[i]=u[i-m];
47             w[i]=w[i-m];
48         }
49         for(int i=1;i<=n;i++)
50             i==1?dis[i]=0:dis[i]=inf;
51         for(int k=1;k<=n-1;k++)
52         {
53             for(int i=1;i<=2*m;i++)
54             {
55                 if(dis[v[i]]>dis[u[i]]+w[i])
56                     dis[v[i]]=dis[u[i]]+w[i];
57             }
58         }
59         printf("%d\n",dis[n]);
60     }
61     return 0;
62 }
View Code

 

 

转载于:https://www.cnblogs.com/xwl3109377858/p/10663018.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataGridView 写入到EXCEL

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Windows.Forms;usingMicrosoft.Office.Interop.Excel;usingSystem.Xml;usingSystem.Xml.Serialization;usingSystem.IO;namespacetxt批处理{ class 保存 { internal static bool 写入E…

Git和Github的学习

来源&#xff1a; 秦时明月NightTiger Git和Github的学习 作者声明&#xff1a;本博客中所写的文章&#xff0c;都是博主自学过程的笔记&#xff0c;参考了很多的学习资料&#xff0c;学习资料和笔记会注明出处&#xff0c;所有的内容都以交流学习为主。有不正确的地方&#xf…

在asp.net中做视频转换,将各种视频文件转换成.flv格式

首先&#xff0c;我们部署一下文件夹.在工程的目录下新建几个文件夹如下图&#xff1a;UpFiles文件夹是要保存你上传的文件&#xff0c;PlayFiles文件夹是用于你转换后保存的文件&#xff08;用于网上播放&#xff09; ImgFile文件夹是保存截取视频文件的图片&#xff0c;然后那…

Android实现支付宝AR功能,Android接入支付宝实现支付功能实例

我本来是想直接讲Android支付这一块的&#xff0c;包括支付宝&#xff0c;微信&#xff0c;其他第三方整合支付等&#xff0c;但是微信开放平台他对我的账号做了限制&#xff0c;所有我今天就先把重心放在支付宝的支付上&#xff0c;也算是写得尽可能详细些吧&#xff0c;毕竟是…

android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...

在2019年&#xff0c;国内的几家手机厂家都是有得有失&#xff0c;虽然华为在国内大杀四方&#xff0c;但是海外市场遇到了一些麻烦&#xff0c;OPPO和VIVO也开始走性价比路线了&#xff0c;但是国内的市场还是被华为打压的厉害&#xff0c;不过海外发展还可以&#xff0c;至于…

[导入]使用SqlCommand对象执行存储过程

表tbClass存放论坛分类 字段名 字段类型 允许空 说明 ClassID uniqueidentifier 否 GUID主键&#xff0c;默认值newid() ClassName Varchar(50) 否 分类名 表tbBoard存放论坛分类中的版块 字段名 字段类型 允许空 说明 BoardID uniqueidentifier 否 GUID主键…

鸿蒙系统开发资金,华为终于动手,将拿出超十亿资金,开发者们有福了

原标题&#xff1a;华为终于动手&#xff0c;将拿出超十亿资金&#xff0c;开发者们有福了3月份也是慢慢地要过完了&#xff0c;4月的到来&#xff0c;仿佛是一个讯号&#xff0c;毕竟鸿蒙即将上线&#xff0c;大家都在期待着这款华为国产的系统&#xff0c;究竟能有什么表现&a…

Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

ylbtech-Java-Runoob-高级教程-实例-数组&#xff1a;10. Java 实例 – 查找数组中的重复元素1.返回顶部 1、Java 实例 - 查找数组中的重复元素 Java 实例 以下实例演示了如何在 java 中找到重复的元素&#xff1a; Main.java 文件 public class MainClass {public static void…

[导入]ServerVariables集合

APPL_PHYSICAL_PATH检索与元数据库路径相应的物理路径。AUTH_TYPE这是用户访问受保护的脚本时&#xff0c;服务器用于检验用户的验证方法。CERT_COOKIE客户端验证的唯一ID&#xff0c;以字符串方式返回。CERT_SERIALNUMBER用户验证的序列号字段。CERT_SERVER_ISSUER服务器验证的…

华为android9.0升级,华为官方更新消息:这几款手机9月5日分批推送安卓9.0系统升级...

原标题&#xff1a;华为官方更新消息&#xff1a;这几款手机9月5日分批推送安卓9.0系统升级随着手机技术的不断发展&#xff0c;不仅手机更新换代加快&#xff0c;就连手机系统也在快速更新&#xff0c;可能很多花粉刚刚升级了基于Android8.0的EMUI8.0系统&#xff0c;对于Andr…

python中strip、startswith、endswith

python中strip、startswith、endswith strip(rm)用来删除元素内的空白符&#xff1a; rm对应要删除空白符的元素&#xff0c;当rm为空(strip())时删除所有元素的空白符 startswith、endswith用来查找开头或结尾条件的元素 例子&#xff1a; 1 li ["alec", " ar…

android终端系统时间,安卓应用修改系统时间

前言通常&#xff0c;我们来获取系统时间来做一些事情&#xff0c;那么&#xff0c;如何设置系统时间呢&#xff1f;问题抛出来&#xff0c;解决方法也就应运而生了。解决方法命令行首先我想到的是手机root&#xff0c;然后命令行date -s 要设置的时间复制代码如果手机没 root …

android红米3调用相机,红米3有什么接口?红米3有HDMI接口吗?

小米红米手机3有什么接口小米红米手机3有3.5mm耳机接口&#xff0c;microUSB充电和数据接口(采用5V/2A标准充电头)。那么小米红米手机3有什么接口?小米红米手机3采用金属机身&#xff0c;其背面由4166颗星星成菱形排列&#xff0c;设计灵感来自夜空中的繁星。当光线游走在圆点…

第二十一天

唉&#xff0c;前一段时间Hotle不能上网了&#xff0c;真是郁闷。 来日本整整三个星期了&#xff0c;天天写文档&#xff0c;真是烦死了。 不过幸好我的客户是个大美女&#xff0c;不到三十&#xff0c;还没结婚呢&#xff0c;哈哈。前两天他们举行新年会的时候&#xff0c;还给…

SAP OData $batch processing

例として、1回の呼び出しで100個の新しい商品を作成したい場合、最も簡単な方法は、$ batch要求を使用して100個のPOST呼び出しすべてを単一のサービス呼び出しにまとめることです。 URIの末尾にsap-statistics trueオプションを追加すると、所要時間についての詳細が表示され…

html第一个子元素选择,css选中父元素下的第一个子元素(:first-child)

前言最近在项目中用到 :first-child 很容易的就想到了&#xff0c;嗯嗯。这不就是选择第一个元素吗&#xff1f;好像很好用&#xff0c;平时使用中也没有遇到什么问题&#xff0c;理所当然的就以为它只会选中父元素下的第一个元素&#xff0c;对孙元素和曾孙元素没有影响。事实…

登录按钮的美化

<input type"submit" value"注册"> input[typesubmit]{width: 60px;height: 30px;/*边框*/border: 2px solid #1B47A4;/*圆角*/border-radius: 10px;/*背景渐变*/background: -moz-linear-gradient(top, #2564EE, #225CD2);background: -webkit-line…

html表格背景图片格式,HTML表格标记教程(8):背景图像属性BACKGROUND

HTML表格标记教程(8):背景图像属性BACKGROUND互联网 发布时间&#xff1a;2008-10-17 18:56:21 作者&#xff1a;佚名 我要评论为表格设置背景图像&#xff0c;可以使用任何的GIF或者JPEG图片文件。基本语法语法解释定义背景图象时&#xff0c;写下图片文件的完整路径或…