华为笔试题目第三题怎么了?我在自己电脑测试根本没有错误呀?这是我的代码,求指教?? #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> using namespace std; queue<int> que; int d2[7][7] = { { 0,2,10,5,3,1000}, { 1000,0,12,1000,1000,10}, { 1000,1000,0,1000,7,1000}, {2,1000,1000,0,2,1000}, {4,1000,1000,1,0,1000}, {3,1000,1,1000,2,0} }; int d[7][7]; const int INF = 1000; int x,y; int dist[10],p[10],in[10]; void spfa(int s){     for(int i=0;i<=5;i++){         dist[i]=INF;         p[i]=i;     }     memset(in,0,sizeof(in));     dist[s]=0;     in[s]=1;     que.push(s);     while(!que.empty()){         int u = que.front();         que.pop();         in[u]=0;         for(int i=0;i<=5;i++){             if(i==y) continue; //大雾不能到达             if(u==y) continue; //大雾不能出发             if(dist[i]>dist[u]+d[u][i]){                 dist[i]=dist[u]+d[u][i];                 p[i]=u;                 if(in[i]==0){                     in[i]=1;                     que.push(i);                 }             }         }     } } int main() {     while(cin>>x>>y){     x--;y--;     for(int i=0;i<=5;i++){         for(int j=0;j<=5;j++){             d[i][j]=d2[i][j];         }     }     spfa(4);     if(dist[x]>=1000) dist[x]=1000;     cout<<dist[x]<<endl;     int cc[10];     int num = 0;     if(dist[x]<1000){         int cur = x;         cc[++num]=cur+1;         while(p[cur]!=cur){             cc[++num]=p[cur]+1;             cur=p[cur];         }         cout<<"[";         for(int i=num;i>1;i--){             cout<<cc[i]<<",";         }         cout<<cc[1]<<"]"<<endl;     }else{         cout<<"[]"<<endl;     }     }     return 0; } 有人愿意和我对拍吗?通过率只有12.5%??
点赞 3

相关推荐

09-10 20:30
门头沟学院 Java
点赞 评论 收藏
分享
牛客网
牛客企业服务