Submission

Status:
PPPPPPPPPP

Score: 100

User: FotoFatTurtle

Problemset: Fast Delivery

Language: cpp

Time: 0.003 second

Submitted On: 2025-03-20 19:35:23

#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int node,edge,te,mp,temp,st;
    cin>>node>>edge;
    vector<vector<pair<int,int>>> adj(node);
    for(int i=0;i<edge;i++)
    {
        cin>>te>>mp>>temp;
        adj[te].push_back({temp,mp});
    }
    cin>>st;
    priority_queue<pair<pair<int,int>,vector<int>>,vector<pair<pair<int,int>,vector<int>>>,greater<pair<pair<int,int>,vector<int>>>> q;
    int dist[node];
    for(int i=0;i<node;i++)
        dist[i]=2e9;
    vector<vector<int>> rou(node);
    dist[st]=0;
    rou[st].push_back(st);
    q.push({{0,st},rou[st]});
    vector<int> tempo;
    while(!q.empty())
    {
        te=q.top().f.f;
        mp=q.top().f.s;
        tempo=q.top().s;
        q.pop();
        if(dist[mp]>te)
            continue;
        for(int i=0;i<adj[mp].size();i++)
        {
            if(dist[adj[mp][i].s]>te+adj[mp][i].f)
            {
                dist[adj[mp][i].s]=te+adj[mp][i].f;
                tempo.push_back(adj[mp][i].s);
                rou[adj[mp][i].s]=tempo;
                q.push({{te+adj[mp][i].f,adj[mp][i].s},tempo});
                tempo.pop_back();
            }
        }
    }
    /*for(int i=0;i<node;i++)
        cout<<dist[i]<<" ";*/
    for(int i=0;i<node;i++)
    {
        if(i==st)
            continue;
        if(dist[i]==2e9)
        {
            cout<<st<<" -> "<<i<<" (inf)";
        }
        else
        {
            cout<<st<<" -> "<<i<<" ("<<dist[i]<<") ";
            for(int j=0;j<rou[i].size();j++)
                cout<<rou[i][j]<<" ";
        }       
        cout<<"\n";
    }
    /*for(int i=0;i<rou[4].size();i++)
        cout<<rou[4][i]<<" ";*/
}