#include <bits/stdc++.h>
//#pragma GCC optimize(O3,unroll-loops)
//#pragma GCC target(avx2,bmi,bmi2,popcnt,lzcnt)
#define ll long long
#define fi first
#define se second
#define pb push_back
const int INF = 1000000000;
using namespace std;
int n,m;
void dijkstra(vector<ll>& d,int s, vector<vector<pair<int,int> > >& adj){
d.assign(n,INF);
d[s]=0;
priority_queue<pair<int,int>,vector<pair<int,int> >, greater<pair<int,int> > > q;
q.push({0,s});
while(!q.empty()){
int v =q.top().se;
int d_v = q.top().fi;
q.pop();
if(d[v]!=d_v)
continue;
for(auto edge : adj[v]){
int to = edge.fi;
int len = edge.se;
if(d[v] + len <d[to]){
d[to] = d[v]+len;
q.push({d[to],to});
}
}
}
}
int main(){
std::ios_base::sync_with_stdio(0); cin.tie(0);
//ifstream cin("in.txt");
int u,s,t,v;
cin >> n >> m;
cin >> s >> t;
cin >> u >> v;
vector<vector<pair<int,int> > > adj(n+1);
int a,b,c;
for(int i=0;i<m;i++){
cin >> a >> b >> c;
adj[a].pb({b,c});
adj[b].pb({a,c});
}
vector<ll> du(m),dt(m),ds(m),dv(m);
dijkstra(ds,s,adj);
dijkstra(dv,v,adj);
dijkstra(dt,t,adj);
ll res=-1;
for(int i=1;i<=n;i++){
if(ds[i] + dt[i] == ds[t]){
if(res==-1) res = dv[i];
else if(res > dv[i]) res=dv[i];
}
}
cout << res;
return 0;
}
# | 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... |