why??
测试数据都对的
#include <bits/stdc++.h>
using namespace std;
const long long Maxx=2147483647;
long long n,m,f,dis[10005],k,minn;
long long w[10005][10005];
bool mark[10005];
int main(){
cin>>n>>m>>f;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
w[i][j]=Maxx;
}
w[i][i]=0;
}
for(int i=1;i<=m;i++){
int v1,v2,ww;
cin>>v1>>v2>>ww;
w[v1][v2]=ww;
}
for(int i = 1;i<=n;i++)dis[i]=Maxx;
dis[f]=0;
for(int i = 1;i<=n;i++){
minn = Maxx;
k=0;
for(int j = 1;j<=n;j++){
if(dis[j]<minn && !mark[j]){
minn=dis[j];
k=j;
}
}
mark[k]=1;
for(int j = 1;j<=n;j++){
dis[j]=min(dis[k]+w[k][j],dis[j]);
}
}
for(int j =1;j<=n;j++)cout<<dis[j]<<' ';
return 0;
}