华为笔试题目第三题怎么了?我在自己电脑测试根本没有错误呀?这是我的代码,求指教??
#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%??