求条pls
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,s;
int head[100010],cnt;
int dis[100010];
bool b[100010];
struct edge
{
int to;
int nextt;
int wei;
} edge[200010];
struct priority
{
int dis;
int id;
bool operator <(const priority &x)const
{
return x.dis<dis;
}
};
void addedge(int x,int y,int z)
{
edge[++cnt].to=y;
edge[cnt].wei=z;
edge[cnt].nextt=head[x];
head[x]=cnt;
}
priority_queue<priority> q;
void dijkstra(int x)
{
q.push((priority){0,x});
for(int i=1;i<=n;i++) b[i]=0;
int t;
while(q.empty()==0)
{
priority temp=q.top();
q.pop();
t=temp.id;
if(!b[t])
{
b[t]=1;
for(int i=head[t];i;i=edge[i].nextt)
{
int v=edge[i].to;
if(dis[v]>dis[t]+edge[i].wei)
{
dis[v]=dis[t]+edge[i].wei;
if(!b[v]) q.push((priority){dis[v],v});
}
}
}
}
}
signed main()
{
cin>>n>>m>>s;
for(int i=1;i<=n;i++) dis[i]=2100000000;
dis[s]=0;
int u,v,wt;
for(int i=1;i<=m;i++)
{
cin>>u>>v>>wt;
addedge(u,v,wt);
//addedge(v,u,wt);
}
dijkstra(s);
for(int i=1;i<=n;i++) cout<<dis[i]<<" ";
return 0;
}