[BOJ]๋ฐฑ์ค€#21937 Silver1 ์ž‘์—… ๐Ÿ”จ (Python, ํŒŒ์ด์ฌ)

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

๋ฐฑ์ค€ Algorithm

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

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


๋ฌธ์ œ



ํ›„๊ธฐ

โฐ ํ’€์ด์‹œ๊ฐ„ 1์‹œ๊ฐ„ ++โฐ

๊ธฐ๋ณธ์ ์ธ DFS ๋ฌธ์ œ์˜€์œผ๋‚˜, ์•„์ง ํƒ์ƒ‰์˜ ๊ฐœ๋…์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ ธ๋‹ค.

์ž…๋ ฅ๋œ X๊นŒ์ง€ ๋„๋‹ฌํ•˜๋Š” ๋ฐ ๊ฑฐ์ณ ๊ฐ„ ๋…ธ๋“œ์˜ ์ˆ˜ ๋งŒํผ์˜ ๊ฐ’์„ ๋”ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ๋‹ค.

dfs(x) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋˜ ๋…ธ๋“œ๋ฅผ ์ง€๋‚˜๋ฉด cnt += 1์„ ํ•˜๋Š” ์‹์œผ๋กœ ํ•˜์—ฌ

๋ฌธ์ œ์˜ ๋‹ต์„ ๊ตฌํ–ˆ๋‹ค. x๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๊ฐ€ ์—†์„ ๋•Œ๋Š” cnt=0์—์„œ ์ถœ๋ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ 0์ด ์ถœ๋ ฅ๋œ๋‹ค.

๋‚˜์˜ ํ’€์ด

import sys

input = sys.stdin.readline

sys.setrecursionlimit(10**7)

n, m = map(int,input().split())

graph = [ [] for _ in range(n+1) ] 

visited=  [False] * (n+1)

for i in range(m):  #์—ฐ๊ฒฐ์š”์†Œ๋ฅผ ์„ ์–ธ 

    a,b= map(int,input().split())

    graph[b].append(a)

x = int(input())


cnt = 0  #์ตœ์ข… ์ถœ๋ ฅ๋  ๊ฐ’ 

def dfs(v):

    global cnt

    visited[v] = True  #์ถœ๋ฐœ ๋…ธ๋“œ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ 

    for i in graph[v]: #๊ทธ๋ž˜ํ”„๋ฅผ ๋Œ๋ฉฐ

        if not visited[i]: #๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋˜ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ฉด  
        
            cnt+=1  # ๊ฐ’์ด ์ฆ๊ฐ€ 

            dfs(i)

        
dfs(x)  


print(cnt)


profile
์•„๋ฌด๋ตํฌ ์žˆ์ด

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