[BOJ]๋ฐฑ์ค€#17199 Silver 1 Milk Factory ๐Ÿฅ›๐Ÿฅ› (Python, ํŒŒ์ด์ฌ)

์ž„์ค€์„ฑยท2022๋…„ 8์›” 7์ผ
0

๋ฐฑ์ค€ Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
41/59
post-thumbnail

๋ฐฑ์ค€ 17199๋ฒˆ
https://www.acmicpc.net/problem/17199

๋ฌธ์ œ



ํ›„๊ธฐ

โฐ ํ’€์ด์‹œ๊ฐ„ 20๋ถ„ ++โฐ

๋งžํžŒ ์‚ฌ๋žŒ์ด ๋งŽ์ง€ ์•Š์€ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ํ’€์€ ์‚ฌ๋žŒ์ด ์ ์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์„œ

์ฐพ์€ ๋ฌธ์ œ์˜ 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์„ ์ถœ๋ ฅํ•œ๋‹ค.
profile
์•„๋ฌด๋ตํฌ ์žˆ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€