Submission
Status:
PPPxPxPxPP
Subtask/Task Score:
70/100
Score: 70
User: AugusEiEi
Problemset: Fast Delivery
Language: cpp
Time: 0.123 second
Submitted On: 2026-03-24 10:05:09
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
ll inf=1e18;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
ll n,m;cin>>n>>m;
vector<ll>dist(n,inf);
vector<bool>visited(n,false);
vector<pll>edges[n];
vector<ll>prev(n,-1);
for(int i=0;i<m;i++){
int u,v,w;cin>>u>>v>>w;
edges[u].emplace_back(v,w);
//edges[v].emplace_back(u,w);
}
ll s;cin>>s;
priority_queue<pll,vector<pll>,greater<pll>>pq;
dist[s]=0;
pq.emplace(dist[s],s);
while(!pq.empty()){
auto [d,x]=pq.top();
pq.pop();
if(visited[x]){
continue;
}
visited[x]=true;
for(auto [tox,w]:edges[x]){
if(dist[tox]>d+w){
dist[tox]=d+w;
prev[tox]=x;
pq.emplace(dist[tox],tox);
}
}
}
vector<ll>ans[n];
for(int i=0;i<n;i++){
int x=i;
ans[i].push_back(i);
while(prev[x]!=s){
ans[i].push_back(prev[x]);
x=prev[x];
}
ans[i].push_back(s);
}
for(int i=0;i<n;i++){
if(i==s) continue;
if(dist[i]==inf) cout<<s<<" -> "<<i<<" "<<"(inf)";
else cout<<s<<" -> "<<i<<" "<<'('<<dist[i]<<") ";
if(dist[i]!=inf){
for(int j=ans[i].size()-1;j>=0;j--){
cout<<ans[i][j]<<" ";
}
}
cout<<endl;
}
}