Submission #1314289

#TimeUsernameProblemLanguageResultExecution timeMemory
1314289AgageldiCommuter Pass (JOI18_commuter_pass)C++20
0 / 100
310 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define N 500005

int tc = 1, n, a[N], S, T, U, V, vis[N], m, ans;
vector <tuple <int,int,int>> E[N];
void dfs(int x,int p,int c) {
    if(x == V) ans = c;
    for(auto i : E[x]) {
        int u, v, j;
        tie(u,v,j) = i;
        if(u != p) {
            dfs(u, x, c + (v * (1-vis[j])));
        }
    }
}

int solve(int x,int p) {
    if(x == T) return 1;
    for(auto i : E[x]) {
        int u, v, j;
        tie(u, v, j) = i;
        if(u != p) {
            if(solve(u, x)) {
                vis[j] = 1;
                return 1;
            }
        }
    }
    return 0;
}

int32_t main() {
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> n >> m >> S >> T >> U >> V;
    for(int i=1; i <= m; i++) {
        int u, v, c;
        cin >> u >> v >> c;
        E[u].push_back({v,c,i});
        E[v].push_back({u,c,i});
    }
    solve(S, 0);
    dfs(U,0, 0);
    cout << ans << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...