Submission #936010

#TimeUsernameProblemLanguageResultExecution timeMemory
936010MinaRagy06Joker (BOI20_joker)C++17
6 / 100
182 ms262144 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N = 200'005;
int par[N], sz[N], dep[N];
int gud;
array<int, 2> find(int u) {
	if (par[u] == u) {
		return {u, 0};
	}
	array<int, 2> v = find(par[u]);
	v[1] ^= dep[u];
	return v;
}
vector<pair<int*, int>> logs;
void assign(int *x, int y) {
	logs.push_back({x, *x});
	*x = y;
}
void join(int u, int v) {
	array<int, 2> pu = find(u), pv = find(v);
	if (pu[0] == pv[0]) {
		assign(&gud, gud && (dep[pv[0]] == (pv[1] ^ pu[1] ^ 1)));
		return;
	}
	if (sz[pu[0]] < sz[pv[0]]) {
		swap(u, v);
		swap(pu, pv);
	}
	assign(&par[pv[0]], pu[0]);
	assign(&dep[pv[0]], (pv[1] ^ pu[1] ^ 1));
	assign(&sz[pu[0]], sz[pu[0]] + sz[pv[0]]);
}
int main() {
	ios_base::sync_with_stdio(0), cin.tie(0);
	int n, m, q;
	cin >> n >> m >> q;
	array<int, 2> e[m];
	for (int i = 0; i < m; i++) {
		cin >> e[i][0] >> e[i][1];
	}
	while (q--) {
		int l, r;
		cin >> l >> r;
		l--, r--;
		for (int i = 1; i <= n; i++) {
			par[i] = i;
			sz[i] = 1;
			dep[i] = 0;
		}
		gud = 1;
		for (int i = 0; i < l; i++) {
			join(e[i][0], e[i][1]);
		}
		for (int i = r + 1; i < m; i++) {
			join(e[i][0], e[i][1]);
		}
		if (gud) {
			cout << "NO\n";
		} else {
			cout << "YES\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...