#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int dis[maxn],head[maxn],n,m,s,cnt=0;
struct node{
int to,dis,nex;
}edges[2*maxn];
struct edge{
int to,dis;
bool operator<(const edge &a)const{
return dis>a.dis;
}
};
void add(int from,int to,int dis){
cnt++;
edges[cnt].to=to;
edges[cnt].dis=dis;
edges[cnt].nex=head[from];
head[from]=cnt;
}
priority_queue<edge> q;
void added(int x){
for(int i=head[x];i!=0;i=edges[i].nex){
if(dis[edges[i].to]||edges[i].to==s){
continue;
}
q.push({edges[i].to,edges[i].dis+dis[x]});
}
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
int u,v,m;
cin>>u>>v>>m;
add(u,v,m);
}
dis[s]=0;
added(s);
while(!q.empty()){
auto tem=q.top();
q.pop();
if(dis[tem.to]){
continue;
}
dis[tem.to]=tem.dis;
added(tem.to);
}
for(int i=1;i<=n;i++){
if(i==s){
cout<<0<<" ";
}
else{
cout<<dis[i]<<" ";
}
}
return 0;
}
怎么把弱化版的提交上去只得WA了4个测试点??