#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define ll long long
#define ld long double
#define en exit(0);
#define pb push_back
#define fi first
#define se second
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N = 1e5+5;
const ll INF = 1e18+5;
int main()
{
//ios_base()::sync_with_stdio(false); cin.tie(0);
ll n, m, s, t, u, v; cin >> n >> m >> s >> t >> u >> v;
ll trains[n+1][n+1];
for(int i = 0; i <= n; i++){
for(int j = 0; j <=n; j++){
trains[i][j] = INF;
}
}
for(int i = 0; i < n; i++){
ll a, b, c; cin >> a >> b >> c;
trains[a][b] = c;
trains[b][a] = c;
}
bool marked[n+1];
for(int caur = 1; caur <= n; caur++){
for(int no = 1; no <=n; no++){
for(int uz = 1; uz<=n; uz++){
trains[no][uz] = min(trains[no][caur] + trains[caur][uz], trains[no][uz]);
}
}
}
ll TOT = trains[s][t];
for(int i = 1; i <= n; i++){
if(trains[s][i]+trains[i][t]==TOT)
marked[i] = 1;
}
ll res = INF;
for(int i = 1; i <= n; i++){
if(marked[i])
res = min(res, trains[i][v]);
}
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... |