此题一直WA,此为WA的代码,哪位神牛级的人物帮我解答一下,在下不胜感激!!!!
#include <algorithm> #include <iostream> #include <string.h> #include <stdio.h> #include <math.h> #include <map> #include <vector> #include <queue> #include <stack> using namespace std; const int N=1150; int inf=1000000000; map<string ,int >mp; int p,n,k; int temp[N]; int num=0; int g[N][N]; int dist[N]; bool f[N]; void init() { mp.clear(); int i,j; for(i=0; i<N; i++) { for(j=0; j<N; j++) g[i][j]=inf; } num=0; } void dij(int s) { memset(f,0,sizeof(f)); fill(dist, dist + num, inf); int i,j; for(i=0; i<num; i++) { dist[i]=g[s][i]; } f[s]=1; //path[0]=-1; for(i=0; i<num-1; i++) { int minmum=inf; int v; for(j=0; j<num; j++) { if(!f[j]&&dist[j]<minmum) { minmum=dist[j]; v=j; } } f[v]=1; for(j=0; j<num; j++) { if(!f[j]&&g[v][j]!=inf&&dist[j]>dist[v]+g[v][j]) { dist[j]=g[v][j]+dist[v]; } } } } int main() { int case22=1; while(scanf("%d%d",&p,&n)!=EOF) { if(p==0&&n==0)break; int i,j,ca; init(); for(ca=0; ca<p; ca++) { memset(temp,-1,sizeof(temp)); int to=0; scanf("%d ",&k); char str[500]; gets(str); int dot=0; string ss=""; for(i=0; i<500&&str[i]!='\0'; i++) { //cout<<str[i]<<endl; if(str[i]==':') { if(!mp.count(ss)) { mp.insert(pair<string ,int>(ss,num++)); temp[to++]=num-1; } else temp[to++]=mp.find(ss)->second; ss=""; i++; break; } if(str[i]==',') { if(dot%2==1) { if(!mp.count(ss)) { mp.insert(pair<string ,int>(ss,num++)); temp[to++]=num-1; } else temp[to++]=mp.find(ss)->second; ss=""; i++; } else ss+=str[i]; dot++; } else { ss+=str[i]; } } for(i=0; i<to; i++) { for(j=i+1; j<to; j++) { g[temp[i]][temp[j]]=min(g[temp[i]][temp[j]],k); g[temp[j]][temp[i]]=min(g[temp[j]][temp[i]],k); } } } printf("Database %d\n",case22++); for(i=0; i<n; i++) { char s[50]; gets(s); int tt=mp.find(s)->second; if(!mp.count("Kevin, Bacon"))printf("%s: infinity\n",s); else {dij(mp.find("Kevin, Bacon")->second); if(dist[tt]==inf)printf("%s: infinity\n",s); else printf("%s: %d\n",s,dist[tt]);} } cout<<endl; } return 0; } /* 3 3 3 John, Belushi, Karen, Allen, Kevin, Bacon: Animal House 1 Tom, Hulce, Karen, Allen: Starting Over 1 Hill, Ken, Bob, Stock: kick the ball John, Belushi Tom, Hulce Bob, Stock */