Submission #521469

#TimeUsernameProblemLanguageResultExecution timeMemory
521469errorgornKutije (COCI21_kutije)C++17
70 / 70
159 ms10592 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ii pair<ll,ll>
#define fi first
#define se second
#define endl '\n'

#define puf push_front
#define pof pop_front
#define pub push_back
#define pob pop_back
#define ub upper_bound
#define lb lower_bound

#define rep(x,s,e) for (auto x=(s)-((s)>(e));x!=(e)-((s)>(e));(s)<(e)?x++:x--)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()

mt19937 rng(177013);

struct UFDS{
	int p[300005];
	
	UFDS(){
		rep(x,0,300005) p[x]=x;
	}
	
	int par(int i){
		if (i==p[i]) return i;
		else return p[i]=par(p[i]);
	}
	
	void unions(int i,int j){
		p[par(i)]=par(j);
	}
} ufds;

int n,k,q;
int arr[1005];

int main(){
	cin.tie(0);
	cout.tie(0);
	cin.sync_with_stdio(false);
	
	cin>>n>>k>>q;
	
	rep(zzz,0,k){
		rep(x,1,n+1) cin>>arr[x];
		
		rep(x,1,n+1) ufds.unions(arr[x],x);
	}
	
	int a,b;
	while (q--){
		cin>>a>>b;
		
		if (ufds.par(a)==ufds.par(b)) cout<<"DA"<<endl;
		else cout<<"NE"<<endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...