제출 #974533

#제출 시각아이디문제언어결과실행 시간메모리
974533kl0989eJoker (BOI20_joker)C++17
14 / 100
2094 ms22108 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define fi first
#define se second
#define pb push_back
#define vi vector<int>
#define pi pair<int, int>
#define all(x) (x).begin(),(x).end()

const int maxn=2e5+10;
vector<vector<pi>> graph(maxn);
vi col(maxn,-1);

bool dfs(int cur, int prev, int color, int l, int r) {
    if (col[cur]==1-color) {
        return 0;
    }
    if (col[cur]!=-1) {
        return 1;
    }
    col[cur]=color;
    for (auto [to,ind]:graph[cur]) {
        if (l<=ind && ind<=r) {
            continue;
        }
        if (to==prev) {
            continue;
        }
        if (!dfs(to,cur,1-color,l,r)) {
            return 0;
        }
    }
    return 1;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,m,q;
    cin >> n >> m >> q;
    vector<pi> vert(m);
    for (int i=0; i<m; i++) {
        cin >> vert[i].fi >> vert[i].se;
        vert[i].fi--;
        vert[i].se--;
        graph[vert[i].fi].pb({vert[i].se,i+1});
        graph[vert[i].se].pb({vert[i].fi,i+1});
    }
    int l,r;
    for (int i=0; i<q; i++) {
        cin >> l >> r;
        fill(all(col),-1);
        bool ok=1;
        for (int j=0; j<n; j++) {
            if (col[j]==-1) {
                if (!dfs(j,-1,0,l,r)) {
                    ok=0;
                    break;
                }
            }
        }
        if (ok) {
            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...