코드
import sys
sys.setrecursionlimit(10**5)
input = sys.stdin.readline
def find(a, lst):
if a != lst[a]:
lst[a] = find(lst[a], lst)
return lst[a]
def union(a, b, lst):
a = find(a,lst)
b = find(b,lst)
if a < b:
lst[b] = a
else: lst [a] = b
tc = int(input())
for i in range(tc):
n = int(input())
k = int(input())
parent = [i for i in range(n+1)]
for _ in range(k):
a,b = map(int, input().split())
union(a,b,parent)
m = int(input())
print(f'Scenario {i+1}:')
for _ in range(m):
u, v = map(int, input().split())
if find(u, parent) == find(v, parent):
print(1)
else: print(0)
print()
입력 조건 해석에 시간이 좀 걸렸던 문제. 여러 개의 테스트 케이스라고 해서 무한 루프인가 했는데 테스트 케이스 개수가 주어진 것이었다. 그 이외에는 유니온 파인드 구현만으로 해결할 수 있는 문제.
'백준' 카테고리의 다른 글
[백준] 10775번 공항 파이썬 코드 (1) | 2024.02.01 |
---|---|
[백준] 25757번 임스와 함께하는 미니게임 파이썬 코드 (0) | 2024.02.01 |
[백준] 16562번 친구비 파이썬 코드 (1) | 2024.02.01 |
[백준] 2611번 자동차경주 파이썬 코드 (1) | 2024.01.28 |
[백준] 20040번 사이클 게임 파이썬 코드 (1) | 2024.01.25 |