WA1个点TLE6个点
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct node{
int p,w;
};
vector<node> a[100009];
int vis[100009];
long long dis[100009];
int ans=0;
void dfs(int u){
for(int i=0;i<a[u].size();i++){
int nxt=a[u][i].p;
if(dis[nxt]<dis[u]+a[u][i].w) continue;
dis[nxt]=dis[u]+a[u][i].w;
dfs(nxt);
}
}
int main()
{
memset(dis,0x3f,sizeof(dis));
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int s;
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
a[u].push_back({v,w});
}
dis[s]=0;
dfs(s);
for(int i=1;i<=n;i++){
if(dis[i]==0x3f3f3f3f) cout<<"2147483647 ";
cout<<dis[i]<<" ";
}
cout<<endl;
return 0;
}