-
[๋ฐฑ์ค] 24480 ์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 2 with PythonPS 2023. 4. 10. 17:23728x90๋ฐ์ํ
๐ BOJ 24480 ์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 2
๐ก ์กฐ๊ฑด
N๊ฐ์ ์ ์ ๊ณผ M๊ฐ์ ๊ฐ์ ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(undirected graph)๊ฐ ์ฃผ์ด์ง๋ค.
์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ์ด๊ณ ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ 1์ด๋ค.
์ ์ R์์ ์์ํ์ฌ ๊น์ด ์ฐ์ ํ์์ผ๋ก ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ถ๋ ฅํ์.
๊น์ด ์ฐ์ ํ์ ์์ฌ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ธ์ ์ ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
์ฒซ์งธ ์ค์ ์ ์ ์ ์ N (5 โค N โค 100,000), ๊ฐ์ ์ ์ M (1 โค M โค 200,000), ์์ ์ ์ R (1 โค R โค N)์ด ์ฃผ์ด์ง๋ค.
๋ค์ M๊ฐ ์ค์ ๊ฐ์ ์ ๋ณด u v๊ฐ ์ฃผ์ด์ง๋ฉฐ ์ ์ u์ ์ ์ v์ ๊ฐ์ค์น 1์ธ ์๋ฐฉํฅ ๊ฐ์ ์ ๋ํ๋ธ๋ค.
(1 โค u < v โค N, u โ v) ๋ชจ๋ ๊ฐ์ ์ (u, v) ์์ ๊ฐ์ ์๋ก ๋ค๋ฅด๋ค.์ฒซ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ ์๋ฅผ ํ ๊ฐ์ฉ ์ถ๋ ฅํ๋ค. i๋ฒ์งธ ์ค์๋ ์ ์ i์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ์ ์ ๋ฐฉ๋ฌธ ์์๋ 1์ด๋ค. ์์ ์ ์ ์์ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ 0์ ์ถ๋ ฅํ๋ค.DFS, ์ ๋ ฌ ์ ํ์ ๋ฌธ์
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์ 1
5 5 1 1 4 1 2 2 3 2 4 3 4
์คํ๊ฒฐ๊ณผ 1
1 4 3 2 0
โจ๏ธ ๋ฌธ์ ํ์ด
๋ฌธ์ ์ ์ง๋ฌธ์ ๋จผ์ ์ ์ดํด๋ณด์.
๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(undirected graph), ์ธ์ ์ ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฉ๋ฌธ,๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋ ์๋ฐฉํฅ ๊ทธ๋ํ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ทธ๋ํ์ ์ ์ฅํ ๋ a์์ b, b์์ a๋ฅผ ์ ์ฅํด์ค์ผ ํ๋ค.
์ธ์ ์ ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์, ๋ฐฉ๋ฌธ์ด ๊ฐ๋ฅํ ๋ค์ ๋ ธ๋๋ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํด์ฃผ์ด์ผ ํ๋ค.
(3), (4)๋ฒ์ ์ ์ํด์ผํ๋ฉฐ, ํ์ด์ฌ์ ๊ฒฝ์ฐ setrecursionlimit์ ํ๋๊ฒ ์์ ํ๋ค.
๋ฐฉ๋ฌธ์ ํ๋ฉด์ ๋ฐฉ๋ฌธํ ์์๋ฅผ visited(๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฐฐ์ด)์ ์ ์ด ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
๐ฅ ์์ค ์ฝ๋
from sys import stdin, setrecursionlimit setrecursionlimit(10 ** 7) n, m, r = map(int, stdin.readline().split()) graph = [[] for _ in range(n + 1)] visited = [0 for _ in range(n + 1)] cnt = 1 for _ in range(m): a, b = map(int, stdin.readline().split()) graph[a].append(b) graph[b].append(a) def dfs(r): global cnt visited[r] = cnt graph[r].sort(reverse=True) for node in graph[r]: if visited[node] == 0: cnt += 1 dfs(node) dfs(r) for i in visited[1:]: print(i)
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1124 ์ธ๋ํ๋ผ์ with Python (0) 2023.04.11 [๋ฐฑ์ค] 7600 ๋ฌธ์๊ฐ ๋ช๊ฐค๊น with Python (0) 2023.04.11 [๋ฐฑ์ค] 10707 ์๋์๊ธ with Python (0) 2023.04.10 [๋ฐฑ์ค] 10025 ๊ฒ์ผ๋ฅธ ๋ฐฑ๊ณฐ with Python (0) 2023.04.10 [๋ฐฑ์ค] 15792 A/B - 2 with Python (0) 2023.04.10