제출 #534829

#제출 시각아이디문제언어결과실행 시간메모리
534829phathnvAutobus (COCI22_autobus)C++11
70 / 70
155 ms8116 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 75;

int n, m, dp[N][N][N];

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= n; ++i) {
        for (int u = 1; u <= n; ++u) {
            for (int v = 1; v <= n; ++v) {
                dp[i][u][v] = (u != v? 1e9 : 0);
            }
        }
    }
    for (int i = 0; i < m; ++i) {
        int u, v, c;
        cin >> u >> v >> c;
        dp[1][u][v] = min(dp[1][u][v], c);
    }
    for (int i = 2; i <= n; ++i) {
        for (int u = 1; u <= n; ++u) {
            for (int v = 1; v <= n; ++v) {
                dp[i][u][v] = dp[i - 1][u][v];
            }
        }
        for (int u = 1; u <= n; ++u) {
            for (int v = 1; v <= n; ++v) {
                for (int k = 1; k <= n; ++k) {
                    dp[i][u][v] = min(dp[i][u][v], dp[i - 1][u][k] + dp[1][k][v]);
                }
            }
        }
    }
    int k, q;
    cin >> k >> q;
    k = min(k, n);
    for (int i = 0; i < q; ++i) {
        int u, v;
        cin >> u >> v;
        cout << (dp[k][u][v] == 1e9? -1 : dp[k][u][v]) << '\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...