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
AC × 37
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