Submission #1241945

#TimeUsernameProblemLanguageResultExecution timeMemory
1241945trantien3771Commuter Pass (JOI18_commuter_pass)C++20
15 / 100
130 ms24840 KiB
#include <bits/stdc++.h>
#define int long long
#define pii pair<int, int>
#define fi first
#define se second
#define pb push_back
const int maxn = 2e5 + 5;
const int mod = 11229837253;

using namespace std;

int n, m, a, b, c, d, r[maxn], trace[maxn];
vector<pii> ke[maxn];

void dijktra1(int s){
    for (int i = 1; i <= n; i++) r[i] = 1e18;
    r[s] = 0;
    priority_queue<pii, vector<pii>, greater<pii>> pq;
    pq.push({0, s});
    while (!pq.empty()){
        int u = pq.top().se;
        int kc = pq.top().fi;
        pq.pop();
        if (kc > r[u]) continue;
        for (auto [v, x] : ke[u]){
            if (r[v] > r[u] + x){
                r[v] = r[u] + x;
                pq.push({r[v], v});
                trace[v] = u;
            }
        }
    }
}



main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> m >> a >> b >> c >> d;
    for (int i = 1; i <= m; i++){
        int u, v, w; cin >> u >> v >> w;
        ke[u].pb({v, w});
        ke[v].pb({u, w});
    }

    dijktra1(a);
    int x = trace[b];
    ke[b].pb({x, 0});
    ke[x].pb({b, 0});
    while (x != 0){
        int cur = x;
        x = trace[x];
        ke[cur].pb({x, 0});
        ke[x].pb({cur, 0});
    }

    dijktra1(c);
    cout << r[d];

    return 0;
}

Compilation message (stderr)

commuter_pass.cpp:37:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   37 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...