#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define pii pair<int,int>
#define endl '\n'
#define all(x) x.begin(),x.end()
const int mod = 998244353;
const int inf = LLONG_MAX;
const int LG = 23;
const int sze = 2e5+23;
struct DSU{
vector<int> parent;
vector<int> sz;
DSU(int n){
parent.resize(n+23,0);
sz.resize(n+23,1);
iota(all(parent),0);
}
int root(int node){
if(parent[node]==node) return node;
return parent[node]=root(parent[node]);
}
void unite(int a,int b){
int x = root(a);
int y = root(b);
if(x!=y){
if(sz[x]<sz[y]){
swap(x,y);
}
parent[y]=x;
sz[x]+=sz[y];
}
}
};
void fast(){
int n,m,q;
cin>>n>>m>>q;
DSU lan(n+23+23);
for(int j=0;j<m;j++){
for(int i=1;i<=n;i++){
int x;cin>>x;
lan.unite(x,i);
}
}
while(q--){
int x,y;
cin>>x>>y;
cout<<(lan.root(x)==lan.root(y) ? "DA":"NE")<<endl;
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tt =1;
// cin>>tt;
while(tt--){
fast();
}
return 0;
}
# | 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... |