Submission
Status:
PPPPPPPPPP
Score: 100
User: osensunny
Problemset: Fast Delivery
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-22 21:46:35
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define vvi vector<vi>
#define ii pair<int, int>
#define fi first
#define se second
#define vii vector<ii>
#define vvii vector<vii>
#define vb vector<bool>
int V, E, src, a, b, c;
vvii adj(1005);
vi dist(1005, 1e9), par(1005, -1);
vb vis(1005, false);
void solve(){
dist[src] = 0;
priority_queue<ii, vii, greater<ii>> pq;
pq.push({dist[src], src});
while(!pq.empty()){
ii fr = pq.top();
pq.pop();
int u = fr.se;
if(vis[u]) continue;
vis[u] = true;
for(ii edge: adj[u]){
int w = edge.fi, v = edge.se;
if(dist[u] + w < dist[v]){
dist[v] = dist[u] + w;
par[v] = u;
pq.push({dist[v], v});
}
}
}
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> V >> E;
for(int i=0; i<E; i++){
cin >> a >> b >> c;
adj[a].push_back({c, b});
}
cin >> src;
solve();
for(int i=0; i<V; i++){
if(i != src){
if(dist[i] == 1e9){
cout << src << " -> " << i << " (inf)";
}
else{
cout << src << " -> " << i << " (" << dist[i] << ") ";
stack<int> st;
int x = i;
while(x != -1){
st.push(x);
x = par[x];
}
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
*/