Submission #1102522

#TimeUsernameProblemLanguageResultExecution timeMemory
1102522EkinOnalKutije (COCI21_kutije)C++17
70 / 70
97 ms1876 KiB
#pragma GCC optimize("O3,unroll-loops,Ofast")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#include <bits/stdc++.h>
using namespace std;

const int N = 1000+5;

struct DSU {
	int e[N]; 
	DSU(){for(int i = 1; i < N-2; i++) e[i]=-1;}

	int get(int x) { return e[x] < 0 ? x : e[x] = get(e[x]); } 
	bool sameSet(int a, int b) { return get(a) == get(b); }
	int size(int x) { return -e[get(x)]; }
	bool unite(int x, int y) { // union by size
		x = get(x), y = get(y); if (x == y) return 0;
		if (e[x] > e[y]) swap(x,y);
		e[x] += e[y]; e[y] = x;  return 1;
	}
};

DSU t;
int n,m,a,b;
int q;
int32_t main(){
	ios_base::sync_with_stdio(0); cin.tie(0);		
	cin>>n>>m>>q;

//	t.init(n+2);
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>a; 
			t.unite(j,a);
		}
	}
	while(q--){
		cin>>a>>b;
		if(t.sameSet(a,b)) cout<<"DA\n";
		else cout<<"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...