【最短路】HDU2112:HDU Today

Problem Description

经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强。这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了。
这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
徐总经常会问蹩脚的英文问路:“Can you help me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。

Input

输入数据有多组,每组的第一行是公交车的总数N(0<=N<=10000);
第二行有徐总的所在地start,他的目的地end;
接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
如果N==-1,表示输入结束。

Output

如果徐总能到达目的地,输出最短的时间;否则,输出“-1”。

Sample Input

6

xiasha westlake

xiasha station 60

xiasha ShoppingCenterofHangZhou 30

station westlake 20

ShoppingCenterofHangZhou supermarket 10

xiasha supermarket 50

supermarket westlake 10

-1

Sample Output

50

Hint:

The best route is:
xiasha->ShoppingCenterofHangZhou->supermarket->westlake

虽然偶尔会迷路,但是因为有了你的帮助

**和**从此还是过上了幸福的生活。

――全剧终――

思路:这是一个简单的最短路 其中只要用到一个小技巧 就是用map容器把字符串改换成对应的int型数字就ok了 另外就是要记录下一共出现了多少不同的字符串,要注意初始化,原以为初始化绝对没问题,然后一直时间超限,。。。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 const int maxn = 200;
 7 const int INF = 1<<30;
 8 char pla[maxn][35],sta[maxn],endd[maxn];
 9 int mapp[maxn][maxn];
10 int vis[maxn],dis[maxn];
11 int n,cnt;
12 void Dijkstra()
13 {
14     int pos,minn;
15     memset(vis,0,sizeof(vis));
16     vis[0]=1;
17     dis[0]=0;
18     for(int i=1;i<cnt;i++)
19         dis[i]=INF;
20     for(int i=0;i<cnt;i++)
21     {
22         pos=0;
23         minn=INF;
24         for(int j=0;j<cnt;j++)
25         {
26             if(!vis[j]&&dis[j]<minn)
27             {
28                 pos=j;
29                 minn=dis[j];
30             }
31         }
32         vis[pos]=1;
33         if(pos==1)
34             return ;
35         for(int j=0;j<cnt;j++)
36         {
37             if( !vis[j]&& mapp[pos][j]!= INF )
38                 dis[j]=min(dis[j],dis[pos]+mapp[pos][j]);
39         }
40
41     }
42 }
43 int tran(char name[])
44 {
45     for(int i=0;i<cnt;i++)
46     {
47         if(!strcmp(pla[i],name))
48             return i;
49     }
50     strcpy(pla[cnt],name);
51     return cnt++;
52 }
53 int main()
54 {
55     char b[35],f[35];
56     int val,beg,fin;
57     while(scanf("%d",&n))
58     {
59         if(n==-1)
60             break;
61         cnt= 0;
62         memset( pla, 0, sizeof( pla ) );
63         memset( mapp, 0x7f, sizeof( mapp ) );
64         scanf("%s",sta);
65         scanf("%s",endd);
66         beg=tran(sta);
67         fin=tran(endd);
68         for(int i=1;i<=n;i++)
69         {
70             scanf("%s%s%d",b,f,&val);
71             int x=tran(b);
72             int y=tran(f);
73             if(val<mapp[x][y])
74                 mapp[x][y]=mapp[y][x]=val;
75         }
76         Dijkstra();
77         if(dis[fin]<INF)
78             printf("%d\n",dis[fin]);
79         else
80             printf("-1\n");
81
82     }
83
84     return 0;
85 }

原文地址:https://www.cnblogs.com/SoulSecret/p/8428541.html

时间: 2024-07-30 06:38:16

【最短路】HDU2112:HDU Today的相关文章

hdu2112(HDU Today 简单最短路)

Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了.这样住了一段时间,徐总对当地的交通还是不太了解.有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格).徐总经常会问蹩脚的英文问路:“Can

Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离.(起点终点相同距离为0)不能到达输出-1. 说真的开始看到这个题,我想利用数字标记那些地名,再利用dijsktra算法,但不知道如何用代码实现,后来在网上看博客 才知道有这样一个头文件#include<map>,map 映射,可以有这种效果,那么这题也就so easy!了, 我的AC代码 #include&l

最短路 (HDU 2544)

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28836    Accepted Submission(s): 12480 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找

HDU2112 HDU Today 【Dijkstra】

HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14743    Accepted Submission(s): 3471 Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候

hdu-2112 HDU Today(最短路)

题目链接: HDU Today Time Limit: 15000/5000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了.这样住了一段时间,

hdu2112 HDU Today 基础最短路

这题的关键是把车站的名字转化为点的编号.我用的是map.声明一个map<string,int> st,然后按照字符串出现的次序给st赋值.例如:st[s1]=2;代表这字符串s1出现的次序是2.出现过的已经被标记.不会重复.接下来用模版就好.不过有一点要注意的是当起点和终点一样是,要输出0. #include<iostream> #include<cstdio> #include<cstring> #include<string> #includ

(最短路 Dijkstra) hdu 1544

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 34764    Accepted Submission(s): 15062 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最

ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544

***************************************转载请注明出处:http://blog.csdn.net/lttree*************************************** 最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28761    Accepted Submissio

ACM总结——dp专辑(转)

感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. 本人动态规划博客地址:http://blog.csdn.net/cc_again/article/category/1261899 ***********************

【DP专辑】ACM动态规划总结

转载请注明出处,谢谢.   http://blog.csdn.net/cc_again?viewmode=list          ----------  Accagain  2014年5月15日 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. 本人动态规划博客地址:http://blog.csdn.net/cc_again/article/category/1261899 ******************