반응형

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

 

10775번: 공항

예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불

www.acmicpc.net

 

각 비행기는 도킹할 수 있는 가장 높은 번호의 게이트에 도킹시켜주었습니다.

유니온 파인드 알고리즘을 이용해서 도킹할 수 있는 게이트를 빠르게 찾아주었습니다.

 

#include <iostream>
#define MAX 100001
using namespace std;

int g, p, d[MAX]; 

int findParent(int x) {
	if (d[x] == x) return x;
	else return d[x] = findParent(d[x]);
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	cin >> g >> p;
	for (int i = 1; i <= g; i++) d[i] = i;
	
	int cnt = 0;
	for (; cnt < p; cnt++) {
		cin >> g;
		int nxt = findParent(g);
		if (!nxt) break;
		d[nxt] = nxt - 1;
	}
	cout << cnt;
}
반응형

'Algorithm' 카테고리의 다른 글

백준 2660 : 회장뽑기  (0) 2021.11.22
백준 2056 : 작업  (0) 2021.11.22
백준 1202 : 보석 도둑  (0) 2021.11.20
백준 1092 : 배  (0) 2021.11.20
백준 1439 : 뒤집기  (0) 2021.11.20

+ Recent posts