import sys
input = sys.stdin.readline
N,M = map(int,input().split())
graph = [[] for _ in range(N+1)]
for _ in range(M):
x,y = map(int,input().split())
graph[y].append(x)
start = int(input())
stack = [start]
cnt = 0
visited = [True for _ in range(N+1)]
visited[start] = False
while stack:
x = stack.pop()
for next_node in graph[x]:
if visited[next_node]:
visited[next_node] = False
cnt += 1
stack.append(next_node)
print(cnt)
주어진 작업을 시행하기위해서 필요한 작업의 양을 구하는 방법은
처음에 들어온 입력을 자식노드에 부모노드를 기억해놓고,
주어진 노드에서부터, 부모로 가면서 부모의 수를 세어주면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 21939 문제 추천 시스템 Version1 (0) | 2021.06.11 |
---|---|
[BOJ/백준] 21938 영상처리 (0) | 2021.06.11 |
[BOJ/백준] 4315 나무 위의 구슬 (0) | 2021.06.11 |
[BOJ/백준] 1966 프린터 큐 (0) | 2021.06.11 |
[BOJ/백준] 1102 발전소 (0) | 2021.06.11 |