Submission #101832
Source Code Expand
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct Query { int type; int e, v, w; }; int root(int x, vector<int> &roots) { if(roots[x] == x) return x; return roots[x] = root(roots[x], roots); } void unite(int x, int y, vector<int> &roots) { x = root(x, roots); y = root(y, roots); if(x == y) return; roots[x] = y; } int main() { cin.tie(0); ios::sync_with_stdio(0); int N, M, K; cin >> N >> M >> K; vector<int> roots(N); vector<pair<int,int> > edges(M); vector<int> remains(M, 1); vector<Query> queries(K); for(int i = 0; i < N; ++i) { roots[i] = i; } for(int i = 0; i < M; ++i) { cin >> edges[i].first >> edges[i].second; edges[i].first--; edges[i].second--; } for(int i = 0; i < K; ++i) { cin >> queries[i].type; if(queries[i].type == 0) { cin >> queries[i].e; queries[i].e--; remains[queries[i].e] = 0; } else { cin >> queries[i].v >> queries[i].w; queries[i].v--; queries[i].w--; } } for(int i = 0; i < M; ++i) { if(remains[i]) { unite(edges[i].first, edges[i].second, roots); } } reverse(queries.begin(), queries.end()); vector<int> res; for(const Query &q : queries) { if(q.type == 0) { const pair<int,int> &e = edges[q.e]; unite(e.first, e.second, roots); } else { if(root(q.v, roots) == root(q.w, roots)) { res.push_back(1); } else { res.push_back(0); } } } reverse(res.begin(), res.end()); for(int n : res) { cout << (n ? "YES" : "NO") << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Graph Destruction |
User | binding_pry |
Language | C++11 (GCC 4.8.1) |
Score | 100 |
Code Size | 1904 Byte |
Status | AC |
Exec Time | 395 ms |
Memory | 4640 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 | 21 ms | 804 KB |
10 | AC | 28 ms | 928 KB |
11 | AC | 58 ms | 1192 KB |
12 | AC | 138 ms | 1832 KB |
13 | AC | 250 ms | 2720 KB |
14 | AC | 356 ms | 3356 KB |
15 | AC | 376 ms | 3992 KB |
16 | AC | 395 ms | 4640 KB |
17 | AC | 133 ms | 1956 KB |
18 | AC | 118 ms | 1824 KB |
19 | AC | 149 ms | 2080 KB |
2 | AC | 20 ms | 804 KB |
20 | AC | 212 ms | 2720 KB |
21 | AC | 150 ms | 2088 KB |
22 | AC | 210 ms | 2600 KB |
23 | AC | 155 ms | 2092 KB |
24 | AC | 105 ms | 1696 KB |
25 | AC | 123 ms | 1832 KB |
26 | AC | 301 ms | 3680 KB |
27 | AC | 103 ms | 1692 KB |
28 | AC | 113 ms | 1824 KB |
29 | AC | 247 ms | 2976 KB |
3 | AC | 22 ms | 804 KB |
30 | AC | 180 ms | 2348 KB |
31 | AC | 297 ms | 3488 KB |
32 | AC | 240 ms | 2984 KB |
33 | AC | 256 ms | 3108 KB |
34 | AC | 301 ms | 3696 KB |
35 | AC | 282 ms | 3228 KB |
36 | AC | 138 ms | 1956 KB |
4 | AC | 22 ms | 740 KB |
5 | AC | 20 ms | 928 KB |
50 | AC | 291 ms | 3492 KB |
6 | AC | 21 ms | 804 KB |
7 | AC | 22 ms | 796 KB |
8 | AC | 24 ms | 812 KB |
9 | AC | 26 ms | 844 KB |