#include<bits/stdc++.h>
using namespace std;
struct node
{
int to,cost;
};
bool visited [10005];
int dis[10005];
vector <node> a[10005];
void dij(int s)
{
priority_queue< pair<int,int> , vector< pair<int,int > > , greater< pair<int,int > > >pr;
pr.push(make_pair(0,s));
memset(dis,0x3f3f3f3f,sizeof(dis));
dis[s]=0;
memset(visited,false,sizeof(visited));
while(!pr.empty())
{
int now=pr.top().second;
pr.pop();
if(visited[now]==true)
{
continue;
}
visited[now]=true;
for(int i=0;i<a[now].size();i++)
{
int next=a[now][i].to;
if(dis[now]+a[now][i].cost < dis[next])
{
dis[next]=dis[now]+a[now][i].cost;
pr.push( make_pair(dis[next],next) );
}
}
}
}
int main()
{
int n,m,s;
cin>>n>>m>>s;
int u,v,l;
for(int i=1;i<=m;i++)
{
cin>>u>>v>>l;
node temp;
temp.to=v;
temp.cost=l;
a[u].push_back(temp);
}
dij(s);
for(int i=1;i<=n;i++) cout<<dis[i]<<" ";
return 0;
}
蒟蒻WA在第3个点,请求神犇们帮忙看看呗~