#include <bits/stdc++.h>
using namespace std;
#define int long long
// #define endl '\n'
#define ff first
#define ss second
#define pb push_back
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define ar array
const int MOD = 1e9 + 7,INF = 1e18, N = 2e5 + 5;
/*
5 2
1 2 2
2 3 2
3 4 2
4 5 2
*/
void solve(){
int n , m;
cin >> n >> m;
int s , t , u , v;
cin >> s >> t >> u >> v;
vector <vector <pair<int,int>>> g(n + 1);
for(int i = 0;i < m;i++){
int a , b , c;
cin >> a >> b >> c;
g[a].pb({b , c});
g[b].pb({a , c});
}
map <pair<int,int> , int> mp;
{
priority_queue <int> q;
q.push(s);
vector <int> cnt(n + 1, INF);
cnt[s] = 0;
vector <int> p(n + 1);
p[s] = -1;
while(!q.empty()){
int x = q.top();
q.pop();
for(auto [i , c] : g[x]){
if(cnt[i] > cnt[x] + c){
cnt[i] = cnt[x] + c;
p[i] = x;
q.push(i);
}
}
}
for(int i = 1;i <= n;i++){
cout<<cnt[i]<<' ';
}
cout<<endl;
for(int i = 1;i <= n;i++){
cout<<p[i]<<' ';
}
cout<<endl;
vector <int> pr;
while(p[t] != -1){
pr.pb(t);
t = p[t];
if(t == 0){
break;
}
}
pr.pb(s);
for(int i = 0;i < (int)pr.size() - 1;i++){
mp[{pr[i] , pr[i + 1]}] = 1;
mp[{pr[i + 1], pr[i]}] = 1;
}
}
priority_queue <int> q;
q.push(u);
vector <int> cnt(n + 1);
cnt[u] = 0;
while(!q.empty()){
int x = q.top();
q.pop();
for(auto [i , c] : g[x]){
if(mp[{i , c}]){
c = 0;
}
if(cnt[i] > cnt[x] + c){
cnt[i] = cnt[x] + c;
q.push(i);
}
}
}
cout<<cnt[v]<<endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int ti = 1;
while (ti--) {
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |