Submission #548111

#TimeUsernameProblemLanguageResultExecution timeMemory
548111aryan12Kutije (COCI21_kutije)C++17
70 / 70
143 ms9448 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count());

const int N = 1010;
int par[N];

int Find(int x)
{
	if(x == par[x])
	{
		return x;
	}
	return par[x] = Find(par[x]);
}

void Unite(int a, int b)
{
	a = Find(a), b = Find(b);
	if(a == b)
	{
		return;
	}
	par[a] = b;
}

void Solve() 
{
	int n, m, q;
	cin >> n >> m >> q;
	for(int i = 1; i <= n; i++)
	{
		par[i] = i;
	}
	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			int x;
			cin >> x;
			if(Find(x) != Find(j))
			{
				Unite(x, j);
			}
		}
	}
	for(int i = 1; i <= q; i++)
	{
		int a, b;
		cin >> a >> b;
		if(Find(a) != Find(b))
		{
			cout << "NE\n";
		}
		else
		{
			cout << "DA\n";
		}
	}
}

int32_t main() 
{
	auto begin = std::chrono::high_resolution_clock::now();
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int t = 1;
	// cin >> t;
	for(int i = 1; i <= t; i++) 
	{
		//cout << "Case #" << i << ": ";
		Solve();
	}
	auto end = std::chrono::high_resolution_clock::now();
    auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
    cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\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...