t_팀결성_298
| source | github.com/ndb796/python-for-coding-test |
| type | 📌 개발노트 |
| topics | 600-알고리즘 & 코딩테스트 609 유니온파인드 |
| types | 문제풀이 |
문제
학생들에게 0부터 n까지 번호를 부여함
모든학생은 처음에는 서로다른팀
두가지 연산만 가능함. 팀합치기 & 같은팀 여부확인
if 같은팀 여부확인 연산일때 결과들을 출력함
연산 a학생 b학생 0:합치기 1:같은팀여부확인
답
걍 문제부터 유니온파인드 쓰라고 적혀져있는 문제라 방법은 딱히 고민하지 않아도된다.
input = input.strip().split('\n')
n,m = map(int, input[0].split())
parents = [0] * (n+1)
for i in range(n+1):
parents[i] = i
def find_parent(parents,x):
if parents[x] != x:
parents[x] = find_parent(parents,parents[x])
return parents[x]
arr = []
for i in range(1, m+1):
f,a,b = map(int,input[i].split())
pa = find_parent(parents,a)
pb = find_parent(parents,b)
if f == 0:
if pa < pb:
parents[pb] = pa
else:
parents[pa] = pb
else:
if pa != pb:
print("NO")
else:
print("YES")