Submission #1085700

#TimeUsernameProblemLanguageResultExecution timeMemory
1085700thaibeo123Commuter Pass (JOI18_commuter_pass)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define fi first
#define se second
const int N = 1e5 + 5;
int n, m, s, t, x, y;
ll dx[N], dy[N], ans, dp[N][2], ds[N];
vector<pair<int, int>> g[N];
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
void dijkstra1(int u, ll d[]) {
    for (int i = 1; i <= n; ++i) d[i] = 1e18;
    d[u] = 0;
    pq.push({d[u], u});
    while (!pq.empty()){
        int u = pq.top().se;
        ll cost = pq.top().fi;
        pq.pop();
        if (cost > d[u]) continue;
        for (pair<int, int> b : g[u]) {
            int v = b.fi;
            ll w = b.se;
            if (d[v] > d[u] + w) {
                d[v] = d[u] + w;
                pq.push({d[v], v});
            }
        }
    }
}
void dijkstra2(int x) {
    for (int i = 1; i <= n; ++i) {
        dp[i][0] = dp[i][1] = 1e18;
        ds[i] = 1e18;
    }
    ds[x] = 0;
    dp[x][0] = dx[x];
    dp[x][1] = dy[x];
    pq.push({ds[x], x});
    while (!pq.empty()) {
        int u = pq.top().se;
        ll cost = pq.top().fi;
        pq.pop();
        if (cost > ds[u]) continue;
        for (pair<int, int> b : g[u]) {
            int v = b.fi;
            ll w = b.se;
            if (ds[v] > ds[u] + w) {
                ds[v] = ds[u] + w;
                dp[v][0] = min(dx[v], dp[u][0]);
                dp[v][1] = min(dy[v], dp[u][1]);
                pq.push({ds[v], v});
            }
            else if (ds[v] == ds[u] + w) {
                dp[v][0] = min(dp[v][0], dp[u][0]);
                dp[v][1] = min(dp[v][1], dp[u][1]);
            }
        }
    }
    ans = min(ans, dp[t][0] + dp[t][1]);
}
int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> m >> s >> t >> x >> y;
    for (int i = 1; i <= m; ++i) {
        int u, v, w;
        cin >> u >> v >> w;
        g[u].push_back({v, w});
        g[v].push_back({u, w});
    }
    dijkstra1(x, dx);
    dijkstra1(y, dy);
    ans = dx[y];
    dijkstra2(s);
    cout << ans;
    return 0;
}

Compilation message (stderr)

cc1plus: error: '::main' must return 'int'