Submission
Status:
PPPPPPPPPP
Score: 100
User: Nozomi_boundfortokyo
Problemset: Fast Delivery
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-20 13:49:08
#include <bits/stdc++.h>
using namespace std;
int n,m;
int u,v,w;
int s;
vector<vector<pair<int,int>>> g;
vector<int> mindis;
vector<int> parent;
int main()
{
cin>>n>>m;
g.resize(n);
mindis.resize(n);
parent.resize(n);
for(int i=0;i<m;i++)
{
int u,v,w;
cin>>u>>v>>w;
g[u].push_back({v,w});
}
cin>>s;
//setup
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
pq.push({0,s});
for(int i=0;i<n;i++)
{
if(i==s)
{
mindis[i]=0;
}
else mindis[i]=1e9;
parent[i]=i;
}
//process
while(!pq.empty())
{
int u=pq.top().second;
pq.pop();
for(auto pii:g[u])
{
int v=pii.first;
int w=pii.second;
if(mindis[u]+w<mindis[v])
{
mindis[v]=mindis[u]+w;
parent[v]=u;
pq.push({mindis[v],v});
}
}
}
//output
for(int i=0;i<n;i++)
{
if(i==s) continue;
cout<<s<<" -> "<<i;
if(mindis[i]==1e9)
{
cout<<" (inf) "<<'\n';
continue;
}
else
{
cout<<" ("<<mindis[i]<<") ";
}
vector<int> path;
for(int v=i;parent[v]!=v;v=parent[v])
{
path.push_back(v);
}
path.push_back(s);
for(int j=path.size()-1;j>=0;j--)
{
cout<<path[j]<<" ";
}
cout<<'\n';
}
}