0分,只过了样例!!!
#include <bits/stdc++.h>
#define int long long
using namespace std;
int MAX=2147483647;
int n,m,s,k;
int d[10000010],vis[10000010];
int g[5010][5010];
void D(int v){
for(int i=1;i<=n;i++)d[i]=MAX;
d[s]=0;
for(int i=1;i<=n;i++){
int mi=MAX;
k=1;
for(int j=1;j<=n;j++){
if(!vis[j]&&mi>d[j]){
mi=d[j];
k=j;
}
}
vis[k]=1;
for(int j=1;j<=n;j++){
if(g[k][j]>0&&!vis[j]&&d[k]+g[k][j]<d[j]){
d[j]=d[k]+g[k][j];
}
}
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
int p,q,w;
cin>>p>>q>>w;
// if(p==s)d[q]=w;
g[p][q]=w;
}
D(s);
for(int i=1;i<=n;i++)cout<<d[i]<<" ";
return 0;
}