ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
0๋ถํฐ N๊น์ง ์งํฉ์ ์ด๋ฃฐ ๋, ํฉ์งํฉ ์ฐ์ฐ๊ณผ ๋ ์์๊ฐ ๊ฐ์ ์งํฉ์ ํฌํจ๋์ด ์๋์ง๋ฅผ ํ์ธํ๊ณ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ `Union-Find`๋ฅผ ์ดํดํ๊ณ ๊ตฌํํ๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ์ฆ, ํด๋น ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๊ตฌํํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
์ฝ๋
from sys import stdin
def find(target):
if target == parent[target]:
return target
return find(parent[target])
def union(root_a, root_b):
if root_a < root_b:
parent[root_b] = root_a
else:
parent[root_a] = root_b
if __name__ == '__main__':
n, m = map(int, stdin.readline().split())
parent = [i for i in range(n + 1)]
for _ in range(m):
op, a, b = map(int, input().split())
find_a, find_b = find(a), find(b)
if op:
print('YES' if find_a == find_b else 'NO')
else:
union(find_a, find_b)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 1701 Cubeditor (0) | 2020.10.22 |
---|---|
๋ฐฑ์ค: 1786 ์ฐพ๊ธฐ (0) | 2020.10.22 |
๋ฐฑ์ค: 16916 ๋ถ๋ถ ๋ฌธ์์ด (0) | 2020.10.19 |
๋ฐฑ์ค: 6087 ๋ ์ด์ ํต์ (0) | 2020.10.18 |
๋ฐฑ์ค: 16234 ์ธ๊ตฌ ์ด๋ (0) | 2020.10.17 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ