【hdu 2112】 HDU Today ( 最短路 Dijkstra)(map)

http://acm.hdu.edu.cn/showproblem.php?pid=2112

这道题给了一个将字符串与int对应的思路,就是使用map

这道题答案对了,但是没有AC,我也不知道为什么。。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <string>
 4 #include <queue>
 5 #include <vector>
 6 #include <map>
 7 using namespace std;
 8 const int Ni = 10000;
 9 const int INF = 1<<27;
10
11 typedef pair<int,int> pa;
12
13 int dis[Ni],n;//dis使用1~n的部分
14
15 vector<pair<int,int> > eg[Ni];
16
17 void Dijkstra(int s)
18 {
19           int i,j;
20           cout<<n<<endl;
21           for(i=0;i<=n;i++)//要到n
22                     dis[i] = INF;
23
24           priority_queue<pa>q;  //优先级队列:小顶堆
25           dis[s] = 0;
26           q.push(make_pair(s,dis[s]));
27           while(!q.empty())
28           {
29                     pa x = q.top();
30                     q.pop();
31                     int w = x.first;
32                     for(j = 0;j<eg[w].size();j++)//遍历x的所有邻接点
33                     {
34                               pa y = eg[w][j];//y是x的邻接点
35                               int u = y.first;
36                               if(dis[u]>x.second+y.second)
37                               {
38                                         dis[u] = x.second+y.second;
39                                         q.push(make_pair(u,dis[u]));
40                               }
41                     }
42           }
43
44 }
45
46
47 int main()
48 {
49           int m,d;//关系个数
50           string a,b;
51           map<string,int> mp;
52           while(cin>>n && n!=-1)
53           {
54                     mp.clear();
55                     for(int i = 0;i<=n;i++)
56                               eg[i].clear();//初始化
57                     cin>>a>>b;
58                     bool flag = false;
59                     if(a==b)
60                               flag = true;
61                     mp[a] = 1;
62                     mp[b] = 2;
63                     int k = 3;
64                     int w,u;
65                     int t = n;
66                     while(t--)
67                     {
68                               cin>>a>>b>>d;
69                               if(!mp[a])
70                               {
71                                         w = k;
72                                         mp[a] = k++;
73                               }
74                               if(!mp[b])
75                               {
76                                         u = k;
77                                         mp[b] = k++;
78                               }
79                               eg[mp[a]].push_back(make_pair(mp[b],d));
80                               eg[mp[b]].push_back(make_pair(mp[a],d));
81                     }
82                     if(flag)
83                     {
84                               cout<<"0\n";
85                               continue;
86                     }
87                     Dijkstra(1);
88                     if(dis[2]!=INF)
89                               cout<<dis[2]<<endl;
90                     else
91                               cout<<"-1\n";
92           }
93
94           return 0;
95 }
时间: 2024-10-31 05:59:34

【hdu 2112】 HDU Today ( 最短路 Dijkstra)(map)的相关文章

hdu 2112 HDU Today (最短路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给出起点和终点,然后算出最短的路. 不过有好多细节要注意: (1)起始点和终止点相等的时候,这里注意不能直接输出0,必须用标记,因为数据可能还没有处理完!!!此处贡献n次wa. (2)这里是某大神教我的用map进行转换,将字符串转换成数字,值得参考.map<string,int>M,V:不过这里同样是wa了好多次.要注意的是将最先输入的开始和结束的点也要放到这个map里面. (3)

HDU 2112 HDU Today (Dijkstra算法)

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

HDU 2112 HDU Today,最短路径算法,Dijkstra

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13396    Accepted Submission(s): 3144 Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HD

hdu 2112 HDU Today 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目意思:又是求最短路的,不过结合埋字符串来考查. 受之前1004 Let the Balloon Rise 学到用map 的解法做之后,有点蠢蠢欲动,当时见到要用字典树做有点吓坏了(之前看过下,非一般难理解,所以暂时放下了).于是,死就死吧,硬住头皮用map做,反反复复修改终于过了. 首先是memory limit exceeded,因为无读清题目意思,直接开10000 * 10000的数组

hdu 2112 HDU Today

http://acm.hdu.edu.cn/showproblem.php?pid=2112 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <string> 5 #include <map> 6 #include <algorithm> 7 #define maxn 6000 8 using namespace std; 9 cons

HDU 2112 HDU Today【最短路+map容器,spfa算法+Dijkstra算法】

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

HDU 2112 HDU Today(Dijkstra)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14527    Accepted Submission(s): 3412 Problem Description 经过锦囊相助,海东集团最终度过了危机.从此.HD

HDU 2112 HDU Today(最短路 SPFA)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 19438    Accepted Submission(s): 4565 Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HD

hdu 2112 HDU Today (Dijkstra + map)

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

hdu 2112 HDU Today(map与dijkstra的结合使用)

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