求助,为什么第一个点wa了啊
查看原帖
求助,为什么第一个点wa了啊
138189
cooronx楼主2021/10/12 23:35
#include<iostream>
using namespace std;
bool flag[10005];
int dis[100004];
int w[10005][10005];
const int INF = 99999999999999;
int main(){
    int k,o;
    int n,m,s;cin>>n>>m>>s;
    for(int i = 1;i<=n;++i){
        for(int j = 1;j<=n;++j){
            if(i == j) w[i][j] = 0;
            else w[i][j] = INF;
        }
    }
    for(int i = 1;i<=m;++i){
        int u,v,val;cin>>u>>v>>val;
        w[u][v] = val;
    }
    flag[s] = 1;
    for(int i = 1;i<=n;++i){
        dis[i] = w[s][i];
    }
    for(int i = 1;i<=n-1;++i){
        int min = INF;
        for(int j = 1;j<=n;++j){

            if(!flag[j] && dis[j] < min){
                min = dis[j];
                k = j;
            }
        }
        flag[k] = 1;
        for(int h = 1;h<=n;++h){
            if(w[k][h] < INF){
                if(dis[h] > dis[k] + w[k][h]){
                    dis[h] = dis[k] + w[k][h];
                }
            }
        }
    }

    for(int i = 1;i<=n;++i){
        cout<<dis[i]<<" ";
    }
    return 0;
}

只是对朴素dji的一个测试,但是为什么会wa啊 输入是 5 15 5 2 5 181 1 5 98 4 2 49 3 2 262 4 3 26 2 4 192 5 1 221 2 2 254 4 4 233 1 5 44 5 4 67 4 2 214 1 1 47 1 1 118 5 4 3 标准输出是221 52 29 3 0 但是我这段代码是221 217 29 3 0

2021/10/12 23:35
加载中...