This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define foru(i, l, r) for(int i = l; i <= r; i++)
#define ford(i, r, l) for(int i = r; i >= l; i--)
#define __TIME (1.0 * clock() / CLOCKS_PER_SEC)
typedef pair<int, int> ii;
typedef pair<ii, int> iii;
typedef pair<ii, ii> iiii;
const int N = 1e3 + 5;
const int oo = 1e18, mod = 1e9 + 7;
int n, m, k, q, lab[N];
int p[1005][1005];
vector<int> adj[N];
// da: yes
// ne: no
void make_set(int v) {
lab[v] = -1;
}
int find_set(int v) {
return lab[v] < 0 ? v : lab[v] = find_set(lab[v]);
}
void union_sets(int a, int b) {
a = find_set(a);
b = find_set(b);
if (a != b) {
if (lab[a] > lab[b]) swap(a, b);
lab[a] += lab[b];
lab[b] = a;
}
}
void process() {
cin >> n >> m >> q; // so mon qua, so ban cua nvc, so query hoi
foru(i,1,n) make_set(i);
foru(i,1,m) {
foru(j,1,n) {
int x; cin >> x;
union_sets(j, x);
}
}
foru(i,1,q) {
int a, b; cin >> a >> b;
if (find_set(a)==find_set(b)) {
cout << "DA\n";
} else {
cout << "NE\n";
}
}
return;
}
signed main() {
cin.tie(0)->sync_with_stdio(false);
//freopen(".inp", "r", stdin);
//freopen(".out", "w", stdout);
process();
cerr << "Time elapsed: " << __TIME << " s.\n";
return 0;
}
/*
Xét các trường hợp đặc biệt
Kiểm tra lại input/output
Cố gắng trâu
Lật ngược bài toán
Calm down and get VOI
Flow:
tu a den b co duong di hay khong?
tao do thi -> dfs
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |