Submission #102478
Source Code Expand
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#define FOR(i, a, n) for(int i = (a); i < (n); i++)
#define REP(i, n) FOR(i, 0, n)
#define RFOR(i, a, n) for(int i = (n) - 1; i >= (a); i--)
#define RREP(i, n) RFOR(i, 0, n)
#define fst first
#define snd second
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX_N = 110000;
const int MAX_M = 110000;
const int MAX_K = 110000;
int n, m, k;
vector<int> g[MAX_N];
pii es[MAX_M];
bool deleted[MAX_N];
int t[MAX_K], a1[MAX_K], a2[MAX_K];
struct UnionFind{
int n;
vector<int> par, rank;
UnionFind(int n_){
n = n_;
par = vector<int>(n);
rank = vector<int>(n);
REP(i, n){
par[i] = i;
rank[i] = 0;
}
}
int find(int x){
return (x == par[x]) ? x : 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);
}
};
vector<bool> solve(){
vector<bool> r;
UnionFind uf(n);
REP(i, m){
if(!deleted[i]){
g[es[i].fst].push_back(es[i].snd);
g[es[i].snd].push_back(es[i].fst);
uf.unite(es[i].fst, es[i].snd);
}
}
RREP(i, k){
if(t[i] == 0){
k = a1[i];
g[es[k].fst].push_back(es[k].snd);
g[es[k].snd].push_back(es[k].fst);
uf.unite(es[k].fst, es[k].snd);
}else{
r.push_back(uf.same(a1[i], a2[i]));
}
}
reverse(r.begin(), r.end());
return r;
}
int main(){
cin >> n >> m >> k;
REP(i, n) g[i].clear();
REP(i, m){
cin >> es[i].fst >> es[i].snd;
es[i].fst--, es[i].snd--;
}
REP(i, k){
cin >> t[i];
if(t[i] == 0){
cin >> a1[i];
a1[i]--;
deleted[a1[i]] = true;
}else{
cin >> a1[i] >> a2[i];
a1[i]--, a2[i]--;
}
}
vector<bool> r = solve();
REP(i, (int)r.size()){
cout << (r[i] ? "YES" : "NO") << endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
D - Graph Destruction |
User |
torimal |
Language |
C++ (GCC 4.4.7) |
Score |
100 |
Code Size |
2068 Byte |
Status |
AC |
Exec Time |
589 ms |
Memory |
9372 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 |
27 ms |
4132 KB |
10 |
AC |
36 ms |
4260 KB |
11 |
AC |
73 ms |
4384 KB |
12 |
AC |
169 ms |
4908 KB |
13 |
AC |
309 ms |
5536 KB |
14 |
AC |
451 ms |
6420 KB |
15 |
AC |
512 ms |
7860 KB |
16 |
AC |
589 ms |
9372 KB |
17 |
AC |
171 ms |
5164 KB |
18 |
AC |
165 ms |
5160 KB |
19 |
AC |
202 ms |
5548 KB |
2 |
AC |
26 ms |
4256 KB |
20 |
AC |
278 ms |
5876 KB |
21 |
AC |
201 ms |
5536 KB |
22 |
AC |
275 ms |
5920 KB |
23 |
AC |
208 ms |
5420 KB |
24 |
AC |
141 ms |
5028 KB |
25 |
AC |
162 ms |
5156 KB |
26 |
AC |
408 ms |
6812 KB |
27 |
AC |
139 ms |
5024 KB |
28 |
AC |
152 ms |
5028 KB |
29 |
AC |
326 ms |
6056 KB |
3 |
AC |
27 ms |
4140 KB |
30 |
AC |
243 ms |
5544 KB |
31 |
AC |
409 ms |
6556 KB |
32 |
AC |
324 ms |
6176 KB |
33 |
AC |
347 ms |
6308 KB |
34 |
AC |
414 ms |
6884 KB |
35 |
AC |
371 ms |
6304 KB |
36 |
AC |
182 ms |
5276 KB |
4 |
AC |
26 ms |
4124 KB |
5 |
AC |
26 ms |
4124 KB |
50 |
AC |
396 ms |
6564 KB |
6 |
AC |
28 ms |
4192 KB |
7 |
AC |
30 ms |
4260 KB |
8 |
AC |
31 ms |
4264 KB |
9 |
AC |
33 ms |
4256 KB |