Submission #101936
Source Code Expand
#include<iostream> #include<vector> #include<algorithm> #include<cstring> using namespace std; typedef pair<int,int> P; const int MAX = 1e5+1; struct query{int q, a,b;}; class UnionFind{ public: vector<int> par; vector<int> rank; void init(int n){ par.resize(n); rank.resize(n); for(int i = 0; i < n; i++){ par[i] = i; rank[i] = 0; } } int find(int x){ if(par[x] == x){ return x; }else{ return par[x] = find(par[x]); } } void unite(int x, int y){ x = find(x); y = find(y); if(x == y) return; if(rank[x] < rank[y]){ par[x] = y; }else{ par[y] = x; if(rank[x] == rank[y]) rank[x]++; } } bool same(int x, int y){ return find(x) == find(y); } }; int N,M,K; int main(){ UnionFind uf; cin >> N >> M >> K; uf.init(N); vector<P> E; for(int i = 0; i < M; i++){ P p; cin >> p.first >> p.second; p.first--; p.second--; E.push_back(p); } vector<query> Q(K); for(int i = 0; i < K; i++){ cin >> Q[i].q; if(Q[i].q == 0) cin >> Q[i].a; else cin >> Q[i].a >> Q[i].b; Q[i].a--; Q[i].b--; } reverse(Q.begin(),Q.end()); vector<bool> ans; bool erase[MAX]; memset(erase,false,sizeof(erase)); for(int i = 0; i < (int)Q.size();i++){ if(Q[i].q == 0) erase[Q[i].a] = true; } for(int i = 0; i < E.size(); i++) if(!erase[i]) uf.unite(E[i].first,E[i].second); for(int i = 0; i < Q.size(); i++){ if(Q[i].q == 0) uf.unite(E[Q[i].a].first,E[Q[i].a].second); else ans.push_back(uf.same(Q[i].a, Q[i].b)); } reverse(ans.begin(),ans.end()); for(int i = 0; i < ans.size(); i++) if(ans[i]) cout << "YES" << endl; else cout << "NO" << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Graph Destruction |
User | tanondaZukky |
Language | C++ (GCC 4.4.7) |
Score | 100 |
Code Size | 1769 Byte |
Status | AC |
Exec Time | 520 ms |
Memory | 3988 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
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 | 22 ms | 804 KB |
10 | AC | 31 ms | 936 KB |
11 | AC | 68 ms | 1196 KB |
12 | AC | 165 ms | 1572 KB |
13 | AC | 297 ms | 2208 KB |
14 | AC | 440 ms | 2676 KB |
15 | AC | 482 ms | 3360 KB |
16 | AC | 520 ms | 3988 KB |
17 | AC | 161 ms | 1704 KB |
18 | AC | 149 ms | 1696 KB |
19 | AC | 196 ms | 1956 KB |
2 | AC | 21 ms | 804 KB |
20 | AC | 267 ms | 2216 KB |
21 | AC | 190 ms | 1960 KB |
22 | AC | 261 ms | 2216 KB |
23 | AC | 198 ms | 1820 KB |
24 | AC | 132 ms | 1568 KB |
25 | AC | 152 ms | 1708 KB |
26 | AC | 394 ms | 2972 KB |
27 | AC | 131 ms | 1544 KB |
28 | AC | 142 ms | 1568 KB |
29 | AC | 321 ms | 2400 KB |
3 | AC | 21 ms | 796 KB |
30 | AC | 229 ms | 2076 KB |
31 | AC | 377 ms | 2844 KB |
32 | AC | 303 ms | 2396 KB |
33 | AC | 336 ms | 2520 KB |
34 | AC | 390 ms | 2972 KB |
35 | AC | 358 ms | 2728 KB |
36 | AC | 170 ms | 1824 KB |
4 | AC | 21 ms | 804 KB |
5 | AC | 24 ms | 880 KB |
50 | AC | 387 ms | 2900 KB |
6 | AC | 23 ms | 808 KB |
7 | AC | 24 ms | 804 KB |
8 | AC | 25 ms | 808 KB |
9 | AC | 28 ms | 888 KB |