Submission #684410

#TimeUsernameProblemLanguageResultExecution timeMemory
684410overwatch9Commuter Pass (JOI18_commuter_pass)C++17
0 / 100
84 ms1876 KiB
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
const int MAX_N = 300 + 1;
vector <pair <int, int>> adj[MAX_N];
ll dis[MAX_N][MAX_N];
int N, M, S, T, U, V;
int main() {
    cin >> N >> M >> S >> T >> U >> V;
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= N; j++) {
            if (i == j)
                dis[i][i] = 0;
            else
                dis[i][j] = 1e15;
        }
    }
    for (int i = 0; i < M; i++) {
        int a, b, w;
        cin >> a >> b >> w;
        adj[a].push_back({b, w});
        adj[b].push_back({a, w});
        dis[a][b] = dis[b][a] = min(dis[a][b], (ll)w);
    }
    // for (int i = 1; i <= N; i++) {
    //     for (int j = 1; j <= N; j++) {
    //         cout << dis[i][j] << ' ';
    //     }
    //     cout << '\n';
    // }
    // cout << '\n';

    for (int k = 1; k <= N; k++) {
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N; j++)
                dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
        }
    }
    
    // for (int i = 1; i <= N; i++) {
    //     for (int j = 1; j <= N; j++) {
    //         cout << dis[i][j] << ' ';
    //     }
    //     cout << '\n';
    // }
    // cout << '\n';

    for (int k = 1; k <= N; k++) {
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N; j++) {
                dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
                if (dis[S][i] + dis[i][j] + dis[j][T] == dis[S][T])
                    dis[i][j] = 0;
            }
        }
    }
    
    // for (int i = 1; i <= N; i++) {
    //     for (int j = 1; j <= N; j++) {
    //         cout << dis[i][j] << ' ';
    //     }
    //     cout << '\n';
    // }
    cout << '\n';

    cout << dis[U][V] << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...