Submission
Status:
PPPPPPPPPP
Score: 100
User: lufychop
Problemset: Fast Delivery
Language: cpp
Time: 0.003 second
Submitted On: 2025-03-14 15:25:22
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
long long n,m,s,u,v,w,t;
cin>>n>>m;
vector<long long> dis(n+1,1e18);
vector<long long> prev(n+1,INT_MAX);
vector<vector<pair<long long,long long>>> adj(n+1);
priority_queue<pair<long long,long long>,vector<pair<long long,long long>>,greater<pair<long long,long long>>> pq;
for(int i=0;i<m;i++)
{
cin>>u>>v>>w;
adj[u].push_back({w,v});
}
cin>>s;
dis[s]=0;
prev[s]=-1;
pq.push({0,s});
while(!pq.empty())
{
u=pq.top().second;
w=pq.top().first;
pq.pop();
if(w>dis[u])
{
continue;
}
for(int i=0;i<adj[u].size();i++)
{
t=adj[u][i].first;
v=adj[u][i].second;
if(dis[v]>w+t)
{
dis[v]=w+t;
prev[v]=u;
pq.push({w+t,v});
}
}
}
for(int i=0;i<n;i++)
{
if(i==s)
{
continue;
}
cout<<s<<" -> "<<i<<" ";
if(dis[i]==1e18)
{
cout<<"(inf)\n";
continue;
}
cout<<"("<<dis[i]<<") ";
stack<long long> st;
v=i;
while(v!=s)
{
st.push(v);
v=prev[v];
}
cout<<s;
while(!st.empty())
{
cout<<" "<<st.top();
st.pop();
}
cout<<"\n";
}
return 0;
}
/*
6 8
0 2 1
1 0 3
1 2 5
2 3 2
2 4 4
3 0 5
3 5 5
4 5 1
1
6 8
0 2 1
1 0 3
1 2 5
2 3 2
2 4 4
3 0 5
3 5 5
4 5 1 0
*/