반응형
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 |