제출 #1169424

#제출 시각아이디문제언어결과실행 시간메모리
1169424DeathIsAweKutije (COCI21_kutije)C++20
25 / 70
47 ms1864 KiB
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define mp make_pair
#define pb push_back
#define ll long long
int dsu[1000], ranc[1000];
bool visited[1000];


int leader(int a) {
    if (dsu[a] != a) {
        dsu[a] = leader(dsu[a]);
    }
    return dsu[a];
}


void join(int a, int b) {
    a = leader(a); b = leader(b);
    if (a != b) {
        if (ranc[a] < ranc[b]) {
            dsu[a] = b;
        } else if (ranc[a] > ranc[b]) {
            dsu[b] = a;
        } else {
            dsu[a] = b;
            ranc[b] += 1;
        }
    }
}


int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    for (int i=0;i<1000;i++) {
        dsu[i] = i;
        ranc[i] = 1;
    }


    int n, m, q, d1, d2; cin >> n >> m >> q;
    vector<vector<int>> toyshift(m, vector<int>(n));
    for (int i=0;i<m;i++) {
        for (int j=0;j<n;j++) {
            cin >> d1; d1 -= 1;
            toyshift[i][d1] = j;
        }
    }


    vector<int> cycle;
    int val;
    for (int i=0;i<m;i++) {
        for (int j=0;j<1000;j++) {
            visited[j] = false;
        }


        for (int j=0;j<n;j++) {
            if (visited[j]) continue;
            val = j;
            while (!visited[val]) {
                cycle.pb(val);
                visited[val] = true;
                val = toyshift[i][val];
            }


            for (int k=1;k<cycle.size();k++) {
                join(cycle[0], cycle[k]);
            }
            cycle.clear();
        }
    }


    for (int i=0;i<q;i++) {
        cin >> d1 >> d2;
        d1 -= 1; d2 -= 1;
        if (dsu[d1] == dsu[d2]) {
            cout << "DA" << '\n';
        } else {
            cout << "NE" << '\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...