제출 #1282603

#제출 시각아이디문제언어결과실행 시간메모리
1282603stefanneaguKutije (COCI21_kutije)C++20
70 / 70
637 ms4556 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int nmax = 1001; struct DSU { int root[nmax], sz[nmax]; void init(int n) { for (int i = 1; i <= n; i++) { root[i] = i, sz[i] = 1; } } int find(int a) { if (root[a] == a) { return a; } return root[a] = find(root[a]); } void unite(int a, int b) { if (a == b) { return; } if (sz[a] > sz[b]) { swap(a, b); } root[a] = b; sz[b] += sz[a]; } } ds; int32_t main() { int n, m, q; cin >> n >> m >> q; ds.init(n); while (m--) { for (int i = 1; i <= n; i++) { int a; cin >> a; ds.unite(ds.find(a), ds.find(i)); } } while (q--) { int a, b; cin >> a >> b; cout << (ds.find(a) == ds.find(b) ? "DA\n" : "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...