๋ฐฑ์ค 17199๋ฒ
https://www.acmicpc.net/problem/17199
๋ฌธ์
ํ๊ธฐ
๋งํ ์ฌ๋์ด ๋ง์ง ์์ ๊ทธ๋ํ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ํ์ ์ฌ๋์ด ์ ์ ์์ผ๋ก ์ ๋ ฌํด์
์ฐพ์ ๋ฌธ์ ์ 3๋ฒ์งธ๋ค.
๋ฌธ์ ์ ๊ฒฐ๋ก ์ ์ด์ผ๊ธฐ ํ์๋ฉด,
์์์ ์ ์ "i" ์์ ์ถ๋ฐํ์ฌ, ์์ ์ ์ ์ธํ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ ์ ์๋ i๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ๋ค.
์ด์ ๋ฐ๋ผ ๊ทธ๋ํ์ ์์๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ , ๋ชจ๋ ์ ์ ์์ ์ถ๋ฐํ ๋ ๋ง๋ค visited๋ฅผ ์ด๊ธฐํํ๋ฉฐ
ํด๋น ์กฐ๊ฑด์ด ๊ฐ๋ฅํ i๋ฅผ ์ฐพ์์ ๋ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋์ ํ์ด
import sys
input= sys.stdin.readline
sys.setrecursionlimit(10**7)
N = int(input())
graph = [[] for _ in range(N+1)]
for _ in range(N-1):
a,b = map(int,input().split())
graph[b].append(a) #๊ทธ๋ํ์ ์์ ์ถ๊ฐ
def dfs(v):
visited[v] = True
for i in graph[v]:
if not visited[i]:
dfs(i)
visited[i] = True
for i in range(1,N+1):
visited = [False] * (N+1) #๋งค๋ฒ visited ๋ฅผ ์ด๊ธฐํํ๋ฉฐ
if not visited[i]:
dfs(i)
if visited.count(True)==N: #i์์ ์์ํ dfs๊ฐ ๋ชจ๋ ๊ทธ๋ํ๋ฅผ ๋ ์ ์์ผ๋ฉด
print(i) #ํด๋น i๋ฅผ ์ถ๋ ฅํ๊ณ ์ข
๋ฃํ๋ค.
exit()
print(-1) #๋ง์กฑํ๋ i๊ฐ ์์ผ๋ฉด -1์ ์ถ๋ ฅํ๋ค.