Submission #101864
Source Code Expand
#include <iostream> #include <algorithm> #include <vector> #include <cstdio> using namespace std; #define rep(i, n) for(int i=0; i<int(n); i++) #define mp make_pair #define all(v) (v).begin(), (v).end() typedef pair<int, int> PI; #define MAX_N 100010 int par[MAX_N]; int rank[MAX_N]; 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 main() { int N, M, K; cin >> N >> M >> K; vector<PI> edges; rep(i, M) { int x, y; cin >> x >> y; x--, y--; edges.push_back(mp(x, y)); } bool del[M]; rep(i, M) del[i] = false; vector<pair<int, PI> > queries; rep(i, K) { int s; cin >> s; if (s == 0) { int e; cin >> e; e--; del[e] = true; queries.push_back(mp(s, edges[e])); } else { int v, w; cin >> v >> w; v--, w--; queries.push_back(mp(s, mp(v, w))); } } reverse(all(queries)); rep(i, MAX_N) par[i] = i, rank[i] = 0; vector<bool> ans; rep(i, M) if (!del[i]) { unite(edges[i].first, edges[i].second); } rep(i, queries.size()) { if (queries[i].first == 0) { unite(queries[i].second.first, queries[i].second.second); } else { ans.push_back(same(queries[i].second.first, queries[i].second.second)); } } reverse(all(ans)); rep(i, ans.size()) { if (ans[i]) cout << "YES" << endl; else cout << "NO" << endl; } }
Submission Info
Submission Time | |
---|---|
Task | D - Graph Destruction |
User | negainoido |
Language | C++ (GCC 4.4.7) |
Score | 100 |
Code Size | 1668 Byte |
Status | AC |
Exec Time | 530 ms |
Memory | 4624 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 | 24 ms | 1524 KB |
10 | AC | 31 ms | 1572 KB |
11 | AC | 69 ms | 1896 KB |
12 | AC | 167 ms | 2276 KB |
13 | AC | 300 ms | 2836 KB |
14 | AC | 436 ms | 3224 KB |
15 | AC | 488 ms | 3792 KB |
16 | AC | 530 ms | 4624 KB |
17 | AC | 165 ms | 2332 KB |
18 | AC | 152 ms | 2336 KB |
19 | AC | 193 ms | 2460 KB |
2 | AC | 23 ms | 1692 KB |
20 | AC | 276 ms | 2904 KB |
21 | AC | 192 ms | 2460 KB |
22 | AC | 263 ms | 2836 KB |
23 | AC | 197 ms | 2444 KB |
24 | AC | 134 ms | 2204 KB |
25 | AC | 154 ms | 2332 KB |
26 | AC | 395 ms | 3796 KB |
27 | AC | 128 ms | 2196 KB |
28 | AC | 144 ms | 2200 KB |
29 | AC | 309 ms | 3092 KB |
3 | AC | 22 ms | 1576 KB |
30 | AC | 232 ms | 2716 KB |
31 | AC | 376 ms | 3604 KB |
32 | AC | 304 ms | 3080 KB |
33 | AC | 332 ms | 3344 KB |
34 | AC | 396 ms | 3864 KB |
35 | AC | 357 ms | 3536 KB |
36 | AC | 173 ms | 2412 KB |
4 | AC | 22 ms | 1700 KB |
5 | AC | 23 ms | 1572 KB |
50 | AC | 377 ms | 3668 KB |
6 | AC | 23 ms | 1576 KB |
7 | AC | 25 ms | 1696 KB |
8 | AC | 25 ms | 1572 KB |
9 | AC | 28 ms | 1572 KB |