Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: SayRo
Problemset: Fast Delivery
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-05 10:53:13
#include<bits/stdc++.h>
using namespace std;
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
int main(){
cin.tie(nullptr)->sync_with_stdio(0);
int n,m,start;
cin>>n>>m;
vector<int> dist(n,INT_MAX);
vector<int> pa(n);
vector<vector<pair<int,int>>> adj(n);
for(int i=0;i<m;i++){
int x,y,z;
cin>>x>>y>>z;
adj[x].push_back({z,y});
}
cin>>start;
dist[start]=0;
pq.push({0,start});
while(!pq.empty()){
auto [w,u] = pq.top();
pq.pop();
if(w>dist[u]) continue;
for(auto [ww,v] : adj[u]){
if(w+ww<dist[v]){
dist[v]=w+ww;
pa[v]=u;
pq.push({dist[v],v});
}
}
}
for(int i=0;i<n;i++){
if(i==start) continue;
cout<<start<<" -> "<<i<<" (";
if(dist[i]==INT_MAX){cout<<"inf)\n";continue;}
cout<<dist[i]<<") ";
vector<int> path;
for(int j=i;j!=start;j=pa[j]) path.push_back(j);
path.push_back(start);
reverse(path.begin(),path.end());
for(auto x : path) cout<<x<<" ";
cout<<endl;
}
}