Submission #1324748

#TimeUsernameProblemLanguageResultExecution timeMemory
1324748askewwTales of seafaring (POI13_mor)C++20
100 / 100
2704 ms34752 KiB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
using V = vector<T>;
using pi = pair<int, int>;

struct Q {
    int u, v, c, i;
};

int n, m, k, u, v, c;
V<V<int>> adj, d;
V<V<Q>> qs;

V<int> ans;

int main() {
    cin >> n >> m >> k;

    adj = V<V<int>>(n + 1);
    for (int i = 1; i <= m; i++) {
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    qs = V<V<Q>>(n + 1);
    ans = V<int>(k + 1);
    for (int i = 1; i <= k; i++) {
        cin >> u >> v >> c;
        qs[u].push_back({u, v, c, i});
    }
    for (int i = 1; i <= n; i++) {
        d = V<V<int>>(2, V<int>(n + 1, -1));
        queue<pi> q;
        q.push({i, 0});
        while (!q.empty()) {
            pi x = q.front();
            q.pop();

            if (d[x.second % 2][x.first] != -1) continue;
            d[x.second % 2][x.first] = x.second;

            for (auto& it : adj[x.first]) {
                q.push({it, x.second + 1});
            }
        }

        for (auto& q : qs[i]) {
            if (q.u == q.v) {
                if (adj[q.u].empty()) {
                    ans[q.i] = 0;
                    continue;
                }
            }

            if (d[q.c % 2][q.v] == -1) {
                ans[q.i] = 0;
                continue;
            }

            if (d[q.c % 2][q.v] <= q.c) {
                ans[q.i] = 1;
            } else {
                ans[q.i] = 0;
            }
        }
    }
    
    for (int i = 1; i <= k; i++) {
        cout << (ans[i] ? "TAK" : "NIE") << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...