rt,一直WA TLE,有无大佬看看哪里错了QAQ
#include<bits/stdc++.h>
using namespace std;
int m,n,s,a,b,c,x;
int dis[1000001],vis[1000001];
int head[1000001],nxt[1000001],to[1000001],w[1000001],cnt;
void edge(int u,int v,int mon){
nxt[++cnt]=head[u];head[u]=cnt;
to[cnt]=v;w[cnt]=mon;
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<=n;i++)dis[i]=1e9;
for(int i=1;i<=m;i++)cin>>a>>b>>c,edge(a,b,c);
dis[s]=0;x=s;
while(!vis[x]){
if(vis[x])continue;vis[x]=1;
for(int i=head[x];i;i=nxt[i])
dis[to[i]]=min(dis[to[i]],dis[x]+w[i]);
int mn=1e9;
for(int i=1;i<=m;i++)
if(dis[to[i]]<mn&&!vis[i])mn=dis[i],x=i;
}
for(int i=1;i<=n;i++) cout<<dis[i]<<" ";
return 0;
}