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';	
	}
}