Submission
Status:
PPPPPPPPPP
Score: 100
User: hmmm
Problemset: Fast Delivery
Language: cpp
Time: 0.006 second
Submitted On: 2025-03-13 11:34:56
#include<bits/stdc++.h>
using namespace std;
using pii=array<int,2>;
const int N=1e5+5;
vector<pii> g[N];
int dis[N],pa[N];
bool vis[N];
priority_queue<pii,vector<pii>,greater<pii>> q;
int main(){
ios::sync_with_stdio(0); cin.tie(0);
int n,m;
cin >> n >> m;
for(int i=1;i<=m;i++){
int u,v,w;
cin >> u >> v >> w;
g[u].push_back({v,w});
// g[v].push_back({u,w});
}
memset(pa,-1,sizeof pa);
int t;
cin >> t;
memset(dis,0x3f,sizeof dis);
q.push({dis[t]=0,t});
while(!q.empty()){
auto l=q.top()[0];
auto x=q.top()[1];
q.pop();
if(vis[x]) continue;
vis[x]=true;
for(auto e:g[x]){
auto xx=e[0];
auto ll=e[1];
if(vis[xx]==false && dis[xx]>dis[x]+ll){
dis[xx]=dis[x]+ll;
q.push({dis[xx],xx});
pa[xx]=x;
}
}
}
for(int i=0;i<n;i++){
if(i==t) continue;
// cout << dis[i] << ' ';
if(dis[i]==1061109567){
cout << t << " -> " << i << " (inf)\n";
}
else{
cout << t << " -> " << i << " (" <<dis[i] << ") ";
int to=i;
vector<int> p;
while(to!=-1){
p.push_back(to);
// cout << to << ' ';
to=pa[to];
}
reverse(p.begin(),p.end());
for(auto e:p) cout << e << ' ';
cout << "\n";
}
}
}