#include<bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define ins insert
#define pb push_back
#define F first
#define S second
const int N = 2e5+100, M = 5e5 + 7;
const int mod = 1e9 + 7;
int pr[N], sz[N], f[N], l[N], r[N], ql[N], qr[N];
bool res[201][N], ans;
int get(int v){
if(pr[v] == v) return v;
else return get(pr[v]);
}
int get1(int v){
if(pr[v] == v) return f[v];
else return (get1(pr[v]) ^ f[v]);
}
void unite(int u, int v){
int a = get(u), b = get(v);
int f1 = get1(u), f2 = (get1(v));
if(a == b){
if(f1 == f2) ans = 1;
}
else{
if(sz[a] < sz[b]){
swap(a, b);
}
sz[a] += sz[b];
pr[b] = a;
sz[b] = 0;
if(f1 == f2) f[b] ^= 1;
}
}
void solve(){
int n, m, q;
cin>>n>>m>>q;
for(int i = 1; i <= m; i++){
cin>>l[i]>>r[i];
}
for(int i = 1; i <= min(200, m); i++){
for(int j = 1; j <= n; j++){
sz[j] = 1;
pr[j] = j;
f[j] = 0;
}
ans = 0;
for(int j = i - 1; j >= 1; j--){
unite(l[j], r[j]);
}
for(int j = m; j >= i; j--){
if(ans){
res[i][j] = 1;
continue;
}
unite(l[j], r[j]);
}
}
for(int i = 1; i <= q; i++){
cin>>ql[i]>>qr[i];
if(ql[i] <= 200){
if(res[ql[i]][qr[i]]){
cout<<"YES\n";
}
else{
cout<<"NO\n";
}
}
}
}
main(){
ios_base :: sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
//cin>>t;
for(int i = 1; i <= t; i++){
//cout<<"Case "<<i<<": ";
solve();
}
}
Compilation message (stderr)
Joker.cpp:72:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
72 | main(){
| ^~~~
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |