[白俊]2606
ウイルス
Union‐Findを用いて解いた.比較は1ではなく、必ず根(find(1))で比較します
Union‐Findを用いて解いた.比較は1ではなく、必ず根(find(1))で比較します
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
int n, m, sub[101], resualt = 0;
int find(int n){
if(sub[n] < 0) return n;
return sub[n] = find(sub[n]);
}
void merge(int a, int b){
a = find(a);
b = find(b);
if(a == b) return;
sub[b] = a;
}
int main(){
memset(sub, -1, sizeof(sub));
cin >> n >> m;
for (int i = 0; i < m; i++)
{
int from, to;
cin >> from >> to;
merge(from, to);
}
for (int i = 2; i <= n; i++)
{
if(find(i) == find(1)) resualt++;
}
cout << resualt;
return 0;
}
Reference
この問題について([白俊]2606), 我々は、より多くの情報をここで見つけました https://velog.io/@kimhuisuv/백준-2606テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol