Submission
Status:
--PPP-P---
Score: 40
User: Nightingale
Problemset: Fast Delivery
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-31 10:31:52
#include <bits/stdc++.h>
#define int long long
using namespace std;
map<int,vector<int>> path;
vector<int> visited;
int best = LLONG_MAX;
vector<int> reala;
int a;
int b;
int deli(vector<vector<int>> &dis,int her,int targ,int walk,vector<int> &jou){
if(her==targ&&walk<=best){
best = walk;
if(jou.size()<reala.size()||reala.empty()&&targ!=a-1) reala = jou;
else if(targ==a-1) reala = jou;
return 0;
}
if(count(visited.begin(),visited.end(),her)!=0) return 0;
visited.push_back(her);
for(int i=0;i<path[her].size();i++){
vector<int> jou2 = jou;
jou2.push_back(path[her][i]);
if(dis[her][path[her][i]]==LLONG_MAX) continue;
int walk2 = walk+dis[her][path[her][i]];
deli(dis,path[her][i],targ,walk2,jou2);
}
return 0;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> a >> b;
vector<vector<int>> dis(a,vector<int>(a,LLONG_MAX));
vector<int> jou;
for(int i=0;i<b;i++){
int c,d,e;
cin >> c >> d >> e;
path[c].push_back(d);
dis[c][d] = e;
}
int want;
cin >> want;
for(auto it=path.begin();it!=path.end();it++){
best = LLONG_MAX;
visited.clear();
reala.clear();
if(it->first!=want){
deli(dis,want,it->first,0,reala);
cout << want << " -> " << it->first << ' ' << "(";
if(best!=LLONG_MAX) cout << best << ") " << want << ' ';
else cout << "inf" << ")";
for(int i=0;i<reala.size();i++){
cout << reala[i] << ' ';
}
cout << '\n';
}
}
}