[백준/BOJ] 백준 10775번 : 공항
2020. 12. 29. 22:40ㆍ알고리즘 문제풀이
유니온 파인드를 이용하여 문제를 해결했다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int g, p;
vector<int> parent(100001);
void Pre()
{
for (int i = 0; i < 100001; i++)
{
parent[i] = i;
}
}
//유니온 파인드의 파인드
int Find(int u)
{
if (parent[u] == u)
return u;
return parent[u] = Find(parent[u]);
}
//유니온 파인드의 유니온
void Merge(int u, int v)
{
u = Find(u);
v = Find(v);
parent[u] = v;
}
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int cnt = 0;
bool finish = false;
Pre();
cin >> g;
cin >> p;
for (int i = 1; i <= p; i++)
{
int gi;
cin >> gi;
if (finish) //공항이 폐쇄되었을때
continue;
if (Find(gi) != 0) //비행기가 도착할 수 있을때
{
cnt++;
Merge(parent[gi], parent[gi] - 1); //이전 공항과 유니온 한다
}
else //비행기가 도착할 수 없을때
finish = true; //공항 폐쇄
}
cout << cnt;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 12849번 : 본대 산책 (0) | 2020.12.30 |
---|---|
[백준/BOJ] 백준 14003번 : 가장 긴 증가하는 부분 수열 5 (0) | 2020.12.29 |
[백준/BOJ] 백준 1806번 : 부분합 (0) | 2020.12.29 |
[백준/BOJ] 백준 1005번 : ACM Craft (0) | 2020.12.29 |
[백준/BOJ] 백준 1181번 : 단어 정렬 (0) | 2020.12.29 |