容器就是好用
#include <iostream> #include <map> #include <string> #include <stdio.h> using namespace std; #define NN 200000000 map<string, int> mp; char start[50],end[50]; int w[160][160]; int main() { int i,j,k,n,m,s,t,x; char a[50],b[50]; while(scanf("%d",&n),n!=-1) { scanf("%s%s",start,end); if(n==0) {printf("-1\n");continue;} mp.clear(); mp[start]=1; mp[end]=2; m=2; for(i=1;i<=150;i++) for(j=1;j<=150;j++) w[i][j]=NN; for(i=1;i<=150;i++) w[i][i]=0; for(i=1;i<=n;i++) { scanf("%s%s%d",&a,&b,&x); if(!mp[a]) mp[a]=++m; if(!mp[b]) mp[b]=++m; if(w[mp[a]][mp[b]]>x||w[mp[b]][mp[a]]>x) w[mp[a]][mp[b]]=w[mp[b]][mp[a]]=x; } for(k=1;k<=m;k++) for(i=1;i<=m;i++) for(j=1;j<=m;j++) { if(w[i][j]>w[i][k]+w[k][j]) w[i][j]=w[i][k]+w[k][j]; } if(w[mp[start]][mp[end]]<NN) printf("%d\n",w[mp[start]][mp[end]]); else printf("-1\n"); } return 0; }
作者:aixiaoling1314 发表于2013-5-10 22:53:07 原文链接
阅读:73 评论:0 查看评论