实在改不了了,只过一个点QAQ
#include<bits/stdc++.h>
using namespace std;
struct node
{
int y;
int v;
};
bool operator<(node n1,node n2)
{
return n1.v<n2.v;
}
priority_queue<node> q;
vector <node> tu[10005];
int vis[10005],dis[10005];
int main()
{
memset(dis,0x3f,sizeof(dis));
int n,m,s,xx;
node a;
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
cin>>xx>>a.y>>a.v;
tu[xx].push_back({a});
}
q.push({s,0});dis[s]=0;
while(!q.empty())
{
node tem=q.top();
q.pop();
int u=tem.y;
if(vis[u]) continue;
vis[u]=1;
for(int i=0;i<tu[u].size();i++)
{
int e=tu[u][i].y;
if(dis[e]>dis[u]+tu[u][i].v)
{
dis[e]=dis[u]+tu[u][i].v;
q.push({e,dis[e]});
}
}
}
for(int i=1;i<=n;i++)
{
if(vis[i])
cout<<dis[i]<<" ";
else cout<<"2147483647";
}
}