본문 바로가기

Algorithm/BAEKJOON

[BOJ] 17352번 여러분의 다리가 되어드리겠습니다! (C++)

728x90
반응형

https://www.acmicpc.net/problem/17352

 

17352번: 여러분의 다리가 되어 드리겠습니다!

선린월드에는 N개의 섬이 있다. 섬에는 1, 2, ..., N의 번호가 하나씩 붙어 있다. 그 섬들을 N - 1개의 다리가 잇고 있으며, 어떤 두 섬 사이든 다리로 왕복할 수 있다. 어제까지는 그랬다. "왜 다리

www.acmicpc.net

 

#include <iostream>
using namespace std;

int n;
int parent[300001];

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

void unionParent(int a, int b){
	a = getParent(a);
	b = getParent(b);
	if(a > b) parent[a] = b;
	else parent[b] = a;
}

bool findParent(int a, int b){
	a = getParent(a);
	b = getParent(b);
	if(a == b) return true;
	else return false;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	cin >> n;
	
	for(int i = 1; i < n; i++)
		parent[i] = i;
	
	for(int i = 0; i < n - 2; i++){
		int a, b;
		cin >> a >> b;
		unionParent(a, b);
	}
	
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			if(i == j) continue;
			if(!findParent(i, j)){
				cout << i << " " << j;
				return 0;
			}
		}
	}
}
728x90
반응형