不知道为什么不对
#include<bits/stdc++.h>
using namespace std;
bool vis[200010];
long long n,m,s,u,v,w,d[200005];
struct node{
int to,w;
};
vector<node>g[200005];
priority_queue<pair<int,int> ,vector<pair<int,int> >,greater<pair<int,int> > >q;
void dejsktra()
{
d[s]=0;
q.push(make_pair(0,s));
while(!vis[u])
{
int u=q.top().second;
vis[u]=1;
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i].to,w=g[u][i].w;
if(!vis[v] && d[v]>d[u]+w)
{
d[v]=d[u]+w;
q.push(make_pair(d[v],v));
}
}
}
}
int main()
{
memset(d,0x3f,sizeof(d));
scanf("%lld%lld%lld", &n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%lld%lld%lld",&u,&v,&w);
g[u].push_back(node{v,w});
}
dejsktra();
for(int i=1;i<=n;i++)
{
printf("%lld ", d[i]);
}
return 0;
}