Submission #101899
Source Code Expand
#include <iostream> #include <cstring> #include <vector> #include <algorithm> #include <utility> using namespace std; const int MAX_N = 100000; struct Query { bool type; int x,y; }; typedef pair<int,int> Pii; int par[MAX_N]; int rank[MAX_N]; Query q[MAX_N]; void init(int 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 main() { int N, M, K; cin >> N >> M >> K; bool use[M]; memset(use, 0xff, sizeof(use)); init(N); //edge Pii e[M]; for (int i=0; i<M; i++) { cin >> e[i].first >> e[i].second; e[i].first--; e[i].second--; //cout << "edge" << i << ": " << e[i].first << ' ' << e[i].second << endl; } //query for (int i=0; i<K; i++) { cin >> q[i].type; if (!q[i].type) { cin >> q[i].x; q[i].x--; use[ q[i].x ] = 0; } else { cin >> q[i].x >> q[i].y; q[i].x--; q[i].y--; } } //final state for (int i=0; i<M; i++) if (use[i]) { //cout << i << endl; unite(e[i].first, e[i].second); //cout << "un:" << e[i].first << ' ' << e[i].second << endl; } //reversely exec query reverse //cout << "---" << endl; vector<int> res; for (int i=K-1; i>=0; i--) { if (q[i].type) { res.push_back(same(q[i].x, q[i].y)); //cout << "q:" << q[i].x << ' ' << q[i].y << ' ' << same(q[i].x, q[i].y) << endl; } else { //cout << q[i].x << endl; //cout << "un:" << e[q[i].x].first << ' ' << e[q[i].x].second << endl; unite(e[ q[i].x ].first, e[ q[i].x ].second); } } reverse(res.begin(), res.end()); for (int i=0; i<res.size(); i++) cout << (res[i] ? "YES" : "NO") << endl; }
Submission Info
Submission Time | |
---|---|
Task | D - Graph Destruction |
User | ytsiden |
Language | C++ (GCC 4.4.7) |
Score | 100 |
Code Size | 2033 Byte |
Status | AC |
Exec Time | 530 ms |
Memory | 4244 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 | 932 KB |
10 | AC | 30 ms | 808 KB |
11 | AC | 69 ms | 1064 KB |
12 | AC | 165 ms | 1632 KB |
13 | AC | 308 ms | 2384 KB |
14 | AC | 440 ms | 2976 KB |
15 | AC | 490 ms | 3620 KB |
16 | AC | 530 ms | 4244 KB |
17 | AC | 161 ms | 1700 KB |
18 | AC | 150 ms | 1700 KB |
19 | AC | 195 ms | 1964 KB |
2 | AC | 22 ms | 804 KB |
20 | AC | 362 ms | 2352 KB |
21 | AC | 194 ms | 1956 KB |
22 | AC | 267 ms | 2296 KB |
23 | AC | 201 ms | 1888 KB |
24 | AC | 133 ms | 1568 KB |
25 | AC | 155 ms | 1704 KB |
26 | AC | 398 ms | 3112 KB |
27 | AC | 133 ms | 1508 KB |
28 | AC | 144 ms | 1700 KB |
29 | AC | 312 ms | 2600 KB |
3 | AC | 22 ms | 808 KB |
30 | AC | 231 ms | 2204 KB |
31 | AC | 378 ms | 2968 KB |
32 | AC | 311 ms | 2520 KB |
33 | AC | 336 ms | 2720 KB |
34 | AC | 399 ms | 3104 KB |
35 | AC | 354 ms | 2848 KB |
36 | AC | 174 ms | 1784 KB |
4 | AC | 21 ms | 804 KB |
5 | AC | 22 ms | 804 KB |
50 | AC | 376 ms | 2964 KB |
6 | AC | 22 ms | 800 KB |
7 | AC | 23 ms | 928 KB |
8 | AC | 24 ms | 800 KB |
9 | AC | 26 ms | 804 KB |