본문 바로가기

알고리즘/백준

[백준] 10775번 : 공항

728x90

10775번: 공항

해당 문제는 소로소 집합 문제로 G(i)가 4일경우 첫번째 방문을 할때에, 부모를 3으로 가르키게 한다.

3을 가리키게 함으로서 4번 도킹에는 비행기를 이륙 시킨 셈이다. 따라서 이후에 4번이 들어온다고해도 3번을 가르키기 때문에 3번 도킹에 이륙하게된다.

import sys
input = sys.stdin.readline
G = int(input())
P = int(input())
parent = [i for i in range(G+1)]
def find(v1):
    if parent[v1] != v1:
        parent[v1] = find(parent[v1])
        return parent[v1]
    else:
        return parent[v1]

def union(v1, v2):
    p1 = find(v1)
    p2 = find(v2)
    if p1 > p2:
        parent[p1] = p2
    else:
        parent[p2] = p1

cnt = 0
for _ in range(P):
    g = int(input())
    p = find(g)

    if p == 0:
        break

    cnt += 1
    union(p, p-1)

print(cnt)
728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 9012번 : 괄호  (1) 2023.10.18
[백준] 20040번 : Cycle Game  (0) 2023.10.18
[백준] 1189번 : 컴백홈  (0) 2023.10.18
[백준] 7579번 : 앱  (0) 2023.10.18
[백준] 9184번 : 신나는함수실행  (0) 2023.10.18