728x90
1. 시간 초과가 나지만 근본 dfs 방식으로 로직만 이해하고 싶어 포스팅
2. 함수 호출할 때 방문 함수를 초기화 시키는 부분과 cnt 값을 1로 초기화 시키는 부분 주목
3. 2차원 배열에 입력값을 삽입하는 부분에서 a,b를 반대로 넣는 부분은
한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터에서부터 탐색을 시작하게 끔 하기 위해서 이다.
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
n,m = map(int,input().split())
arr = [[] for _ in range(n+1)]
cnt = 0
for _ in range(m):
a,b = map(int,input().split())
arr[b].append(a)
def dfs(i):
global cnt
visit[i] = True
for item in arr[i]:
if not visit[item]:
cnt+=1
dfs(item)
max_cnt = -1
for i in range(1, n+1):
visit = [False]*(n+1)
cnt = 1
dfs(i)
if cnt > max_cnt:
max_cnt = cnt
res = set([])
res.add(i)
elif cnt == max_cnt:
res.add(i)
print(*res)
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 1965번 python 풀이 - dp (1) | 2023.03.09 |
---|---|
[백준/BOJ] - 8394번 python 풀이 - dp (0) | 2023.03.08 |
[백준/BOJ] - 2668번 python 풀이 - DFS (0) | 2023.03.05 |
[백준/BOJ] - 1245번 python 풀이 - DFS (0) | 2023.03.01 |
[백준/BOJ] - 1743번 python 풀이 - DFS (0) | 2023.02.28 |