Submission #101816


Source Code Expand

#include <bits/stdc++.h>
#define REP(i,n) for(int i=0; i<(int)(n); ++i)

using namespace std;
typedef long long ll;

const int    INF = 1000000000;
const int    MOD = 1000000007;
const double EPS = 1e-8;
typedef pair<int, int> P;
struct UnionFind{
    vector<int> data;
    UnionFind(int N) : data(N, -1){}
    int root(int x){
        if(data[x] < 0) return x;
        return data[x] = root(data[x]);
    }
    bool uni(int x, int y){
        x = root(x);
        y = root(y);
        if(x == y) return false;
        if(data[x] < data[y]) swap(x, y);
        data[x] += data[y];
        data[y] = x;
        return true;
    }
    bool same(int x, int y){
        return root(x) == root(y);
    }
};

int main(){
    int N, M, K;
    while(cin >> N >> M >> K){
        vector<P> es(M);
        vector<bool> erased(M, false);
        REP(i, M){
            cin >> es[i].first >> es[i].second;
        }
        vector<int> q(K);
        vector<int> v(K), w(K);
        REP(i, K){
            cin >> q[i];
            if(q[i] == 0){
                cin >> v[i];
                erased[ v[i] - 1 ] = true;
            }else{
                cin >> v[i] >> w[i];
            }
        }
        UnionFind uf(N);
        for(int i = 0; i < M; i++) if(not erased[i]) uf.uni(es[i].first - 1, es[i].second - 1);
        vector<int> res;
        for(int i = K - 1; i >= 0; i--){
            if(q[i] == 0){
                int e = v[i] - 1;
                uf.uni(es[e].first - 1, es[e].second - 1);
            }else{
                res.push_back( uf.same(v[i] - 1, w[i] - 1) );
            }
        }
        reverse(res.begin(), res.end());
        for(auto ri : res){
            puts( (ri == 0 ? "NO" : "YES") );
        }
    }
    return 0;
}

Submission Info

Submission Time
Task D - Graph Destruction
User YellowYell
Language C++11 (GCC 4.8.1)
Score 100
Code Size 1812 Byte
Status AC
Exec Time 241 ms
Memory 3744 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 37
Set Name Test Cases
All 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 4, 5, 50, 6, 7, 8, 9
Case Name Status Exec Time Memory
1 AC 241 ms 756 KB
10 AC 23 ms 932 KB
11 AC 36 ms 1064 KB
12 AC 66 ms 1580 KB
13 AC 101 ms 2340 KB
14 AC 148 ms 2856 KB
15 AC 190 ms 3348 KB
16 AC 233 ms 3744 KB
17 AC 74 ms 1700 KB
18 AC 71 ms 1572 KB
19 AC 86 ms 1836 KB
2 AC 20 ms 928 KB
20 AC 115 ms 2224 KB
21 AC 85 ms 1824 KB
22 AC 115 ms 2368 KB
23 AC 86 ms 1820 KB
24 AC 64 ms 1576 KB
25 AC 70 ms 1696 KB
26 AC 173 ms 2968 KB
27 AC 61 ms 1440 KB
28 AC 67 ms 1576 KB
29 AC 131 ms 2468 KB
3 AC 20 ms 928 KB
30 AC 98 ms 2092 KB
31 AC 159 ms 2840 KB
32 AC 126 ms 2468 KB
33 AC 139 ms 2588 KB
34 AC 173 ms 2968 KB
35 AC 148 ms 2720 KB
36 AC 77 ms 1708 KB
4 AC 21 ms 804 KB
5 AC 21 ms 808 KB
50 AC 157 ms 2860 KB
6 AC 21 ms 808 KB
7 AC 24 ms 772 KB
8 AC 21 ms 800 KB
9 AC 22 ms 808 KB