C언어/문제풀다 하나씩

setUnion 과 findboss해보기 - UNIONFIND

mcdn 2020. 5. 22. 13:40
반응형
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

char arr[100] = { 0 };

char find_boss(char ch) {
	if (arr[ch] == 0) return ch;
	char ret = find_boss(arr[ch]);
	return ret;
}
void setUnion(char a, char b){
	char apar = find_boss(a);
	char bpar = find_boss(b);
	if (apar == bpar) return;
	arr[bpar] = apar;
}


int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n;i++) {
		char a, b;
		cin >> a >> b;
		if (find_boss(a) == find_boss(b)) {
			cout << "발견";
			return 0;
		}
		setUnion(a, b);
	}
	cout << "미발견";
}

입력 예제

4 A C A B B D C B

출력 결과

발견

 

 

find_boss가 setUnion뒤에 있으면 setUnion할 때 findboss가 작동안함 앞에다 두어야...

반응형