标签:style blog http color os io 数据 for
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112
题目大意:给出起点和终点,然后算出最短的路。
不过有好多细节要注意:
(1)起始点和终止点相等的时候,这里注意不能直接输出0,必须用标记,因为数据可能还没有处理完!!!此处贡献n次wa。
(2)这里是某大神教我的用map进行转换,将字符串转换成数字,值得参考。map<string,int>M,V;不过这里同样是wa了好多次。要注意的是将最先输入的开始和结束的点也要放到这个map里面。
(3)再就是注意的dijkstra这个算法的应用了。
祝大家好运~wa了14次的我眼泪掉下来。。。。。
1 #include <iostream> 2 #include <cstdio> 3 #include <map> 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 #define INF 9999999 8 int k,Map[155][155],node[155]; 9 map<string,int>M,V; 10 11 void set() 12 { 13 for (int i=0; i<155; i++) 14 { 15 node[i]=INF; 16 for (int j=0; j<155; j++) 17 { 18 if (i!=j) 19 Map[i][j]=INF; 20 else 21 Map[i][j]=0; 22 } 23 } 24 } 25 26 void dijkstra(int m) 27 { 28 int vis[155]= {0}; 29 int tm=m; 30 vis[m]=1; 31 node[m]=0; 32 for (int j=1; j<k; j++) 33 { 34 int Min=INF; 35 for (int i=0; i<k; i++) 36 if (!vis[i]) 37 { 38 if (node[i]>node[tm]+Map[tm][i]) 39 node[i]=node[tm]+Map[tm][i]; 40 if (Min>node[i]) 41 { 42 Min=node[i]; 43 m=i; 44 } 45 //cout<<i<<" "<<node[i]<<" "<<Map[tm][i]<<endl; 46 } 47 vis[m]=1; 48 tm=m; 49 } 50 } 51 52 int main() 53 { 54 bool flag; 55 int t,n; 56 while (scanf("%d",&n),n!=-1) 57 { 58 flag=0; 59 M.clear(); 60 V.clear(); 61 set(); 62 //memset(Map,INF,sizeof(Map)); 63 char start[135],end[135],s[135],e[135]; 64 k=2; 65 scanf("%s%s",start,end); 66 if (strcmp(start,end)==0) 67 flag=1; 68 if(n==0) 69 { 70 printf("-1\n"); 71 continue; 72 } 73 M[start]=0; 74 M[end]=1; 75 while (n--) 76 { 77 scanf("%s%s%d",s,e,&t); 78 if(!V[s]) 79 { 80 V[s]=1; 81 M[s]=k++; 82 //cout<<k<<endl; 83 } 84 if(!V[e]) 85 { 86 V[e]=1; 87 M[e]=k++; 88 //cout<<k<<endl; 89 } 90 if (Map[M[s]][M[e]]>t) 91 Map[M[s]][M[e]]=Map[M[e]][M[s]]=t; 92 } 93 //set(); 94 //cout<<k<<endl; 95 if (flag) 96 { 97 printf ("0\n"); 98 continue; 99 } 100 dijkstra(M[start]); 101 if(node[M[end]]==INF) 102 printf ("-1\n"); 103 else 104 printf ("%d\n",node[M[end]]); 105 } 106 return 0; 107 }
hdu 2112 HDU Today (最短路),布布扣,bubuko.com
标签:style blog http color os io 数据 for
原文地址:http://www.cnblogs.com/qq-star/p/3908399.html