提出 #310878


ソースコード 拡げる

#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <numeric>
#define FOR(x, to) for (int x = 0; x < to; x++)

using namespace std;

typedef long long ll;
typedef pair<int, int> P;

int ans;
int N, M;
int parent[100005];

void init() {
	for (int i = 0; i < 100005; i++) {
		parent[i] = i;
	}
}

int find(int x) {
	if (x == parent[x]) {
		return x;
	} else {
		return parent[x] = find(parent[x]);
	}
}

void unite(int x, int y) {
	int a = find(x);
	int b = find(y);
	if (a == b) return;
	parent[b] = a;
}


int main() {
	cin >> N >> M;
	init();
	FOR(i, M) {
		int a, b;
		cin >> a >> b;
		a--; b--;
		//cout << a << " " << b << endl;
		unite(a, b);
	}
	FOR(i, N) {
		int x = find(i);
		if (i == x) ans++;
	}
	cout << ans-1 << endl;
	return 0;
}


提出情報

提出日時
問題 B - 道路工事
ユーザ apple_juice
言語 C++ (G++ 4.6.4)
得点 100
コード長 960 Byte
結果 AC
実行時間 140 ms
メモリ 1312 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 100 / 100
結果
AC × 2
AC × 20
セット名 テストケース
Sample sample1.txt, sample2.txt
All 0.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt
ケース名 結果 実行時間 メモリ
0.txt AC 28 ms 1300 KiB
1.txt AC 25 ms 1064 KiB
10.txt AC 27 ms 1184 KiB
11.txt AC 25 ms 1308 KiB
12.txt AC 25 ms 1308 KiB
13.txt AC 25 ms 1184 KiB
14.txt AC 25 ms 1104 KiB
15.txt AC 109 ms 1184 KiB
16.txt AC 26 ms 1184 KiB
17.txt AC 26 ms 1312 KiB
18.txt AC 25 ms 1304 KiB
19.txt AC 140 ms 1176 KiB
2.txt AC 25 ms 1300 KiB
3.txt AC 25 ms 1184 KiB
4.txt AC 27 ms 1060 KiB
5.txt AC 25 ms 1180 KiB
6.txt AC 26 ms 1304 KiB
7.txt AC 26 ms 1188 KiB
8.txt AC 25 ms 1184 KiB
9.txt AC 25 ms 1188 KiB
sample1.txt AC 27 ms 1192 KiB
sample2.txt AC 27 ms 1116 KiB