#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