#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define eb emplace_back
#define F first
#define S second
typedef pair<int,int> ii;
template<typename T>
using vec = vector<T>;
using i64 = long long;
struct DSU{
int n;
vec<int> dsu,dist;
DSU(int n) : n(n){
dsu.assign(n,-1);
dist.assign(n,0);
}
int find(int x){
if (dsu[x] < 0) return x;
int old = dsu[x];
dsu[x] = find(old);
dist[x] = (dist[x] + dist[old]) & 1;
return dsu[x];
}
bool merge(int x,int y){
int px = find(x); int py = find(y);
if (px == py) {
if (dist[x] == dist[y]){
return false;
}
return true;
}
if (dsu[px] > dsu[py]) swap(px,py);
dsu[px] += dsu[py];
dsu[py] = px;
dist[py] = (dist[x] + 1 + dist[y]) & 1;
return true;
}
};
int n,m,q;
vec<ii> edges;
vec<vec<ii>> queries;
vec<bool> ans;
int main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
cin >> n >> m >> q;
ans.assign(q + 1,false);
queries.assign(m,vec<ii>());
for (int i = 0; i < m; i++){
int a,b; cin >> a >> b;
a--; b--;
edges.eb(a,b);
}
for (int i = 0; i < q; i++){
int l,r; cin >> l >> r;
l--; r--;
queries[l].eb(r,i);
}
for (int l = 0; l < m; l++){
if (!queries[l].empty()){
DSU dsu(n+1);
bool ok = false;
for (int i = 0; i < l; i++){
if (!dsu.merge(edges[i].F,edges[i].S)) ok = true;
}
int idx = m-1;
while (!ok && idx >= l){
if (!dsu.merge(edges[idx].F,edges[idx].S)) ok = true;
idx--;
}
for (auto tp : queries[l]){
int r,i; tie(r,i) = tp;
if (r <= idx) ans[i] = true;
else ans[i] = false;
}
}
}
for (int i = 0; i < q; i++) cout << (ans[i] ? "YES" : "NO") << endl;
return 0;
}
| # | 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... |