这里是代码,样例会输出0 INF INF INF
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define N 1001
using namespace std;
long long tu[N][N],n,m,cnt=0;
long long dist[N];
bool vis[N]={0};
void dijkstra(int root){
cnt++;
if(cnt>=n){
return ;
}
vis[root]=1;
int minn=1e9,roo;
for(int i=1;i<=n;i++){
if(vis[i]==0&&tu[root][i]<1e9){
dist[i]=min(dist[root]+tu[root][i],dist[i]);
if(dist[i]<minn){
minn=dist[i];
roo=i;
}
}
}
dijkstra(roo);
}
int main(){
memset(tu,1e9,sizeof tu);
int n,m,s;
cin>>n>>m>>s;
for(int j=1;j<=m;j++){
long long x,y,z;
cin>>x>>y>>z;
tu[x][y]=max(tu[x][y],z);
}
memset(dist,INF,sizeof dist);
memset(vis,0,sizeof vis);
dist[s]=0;
dijkstra(s);
for(int i=1;i<=n;i++){
cout<<dist[i]<<" ";
}
return 0;
}