๋ฐฑ์ค 21937๋ฒ
https://www.acmicpc.net/problem/21937
๋ฌธ์
ํ๊ธฐ
๊ธฐ๋ณธ์ ์ธ 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)