Submission #509680

#TimeUsernameProblemLanguageResultExecution timeMemory
509680KoDKutije (COCI21_kutije)C++17
35 / 70
1043 ms11108 KiB
#include <bits/stdc++.h>

using std::vector;
using std::array;
using std::pair;
using std::tuple;

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int N, M, Q;
    std::cin >> N >> M >> Q;
    vector edge(N, vector<char>(N));
    for (int i = 0; i < M; ++i) {
        for (int j = 0; j < N; ++j) {
            int p;
            std::cin >> p;
            edge[p - 1][j] = true;
        }
    }
    vector reach(N, vector<char>(N));
    for (int src = 0; src < N; ++src) {
        std::queue<int> que;
        const auto push = [&](const int u) {
            if (!reach[src][u]) {
                reach[src][u] = true;
                que.push(u);
            }
        };
        push(src);
        while (!que.empty()) {
            const int u = que.front();
            que.pop();
            for (int i = 0; i < N; ++i) {
                if (edge[u][i]) {
                    push(i);
                }
            }
        }
    }
    while (Q--) {
        int a, b;
        std::cin >> a >> b;
        std::cout << (reach[a - 1][b - 1] ? "DA" : "NE") << '\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...