Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: skibididopdop

Problemset: Fast Delivery

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-18 22:12:08

#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,m;
    cin>>n>>m;
    vector <vector <pair<int,int>>> adj(n);
    int u,v,w;
    for (int i=0;i<m;i++){
        cin>>u>>v>>w;
        adj[u].push_back({v,w});
        //adj[v].push_back({u,w});
    }
    int s;
    cin>>s;
    vector <int> dist(n,INT_MAX);
    vector <int> pa(n,-1);
    priority_queue <pii,vector <pii>,greater <pii>> pq;
    pq.push({0,s});
    dist[s]=0;
    vector <bool> check(n,0);
    while (!pq.empty()){
        int we=pq.top().first;
        int x=pq.top().second;
        pq.pop();
        if (we>dist[x]) continue;
        for (auto e:adj[x]){
            int a=e.first;
            int b=e.second;
            if (dist[x]+b<dist[a]){
                dist[a]=dist[x]+b;
                pq.push({dist[a],a});
                pa[a]=x;
            }
        }
    }
    //cout<<dist[1]<<"\n";
    for (int i=0;i<n;i++){
        if (i==s){
            continue;
        }
        else if (dist[i]==INT_MAX){
            cout<<s<<" -> "<<i<<" "<<"(inf)"<<"\n";
            continue;
        }
        cout<<s<<" -> "<<i<<" "<<"("<<dist[i]<<")"<<" ";
        int c=i;
        vector <int> ans;
        ans.push_back(i);
        while (pa[c]!=-1){
            ans.push_back(pa[c]);
            c=pa[c];
        }
        int an=ans.size();
        for (int j=ans.size()-1;j>=0;j--){
            cout<<ans[j]<<" ";
        }
        cout<<"\n";
    }
}