처음에는 방문을 할 필요가 있을까라는 생각에
방문 없이 제출을 했는데 메모리 초과가 발생해서
방문 체크 후 제출을 했지만 그래도 여전히 시간 초과...
그래서 혹시나 하는 마음에 pypy로 제출을 하니 꾸역꾸역 제출은 완료됐는데... 이게 맞는건가 싶네
풀이 과정
- 문제를 처음 접했을 때 A가 B를 신뢰하는 경우
- B를 해킹하면, A도 해킹할 수 있다는 말에
- ??? 그러면 반대로 방향있는 선을 만들어야겠다 생각해서
- 만들어둔 arr에 arr[b].append(a)로 추가
- 이후 평범한 bfs로 문제 풀이하며
- 반복문이 순회 마지막에 해당 값이 큰지에 대한 여부 파악 후 마지막 출력 조건에 사용
import sys
from collections import deque
input = sys.stdin.readline
n,m = map(int,input().split())
arr = [[] for _ in range(n+1)]
li = [0]*(n+1)
mx = 0
for _ in range(m):
a,b = map(int,input().split())
arr[b].append(a)
for i in range(1,n+1):
visit = [False]*(n+1)
q = deque([i])
visit[i] = True
while q:
li[i] += 1
s = q.popleft()
for x in arr[s]:
if not visit[x]:
visit[x] = True
q.append(x)
if li[i] > mx: mx = li[i]
[print(i, end=' ') for i in range(1,n+1) if li[i] == mx]
'알고리즘' 카테고리의 다른 글
[백준, 9372번] 상근이의 여행 (0) | 2023.08.21 |
---|---|
[백준, 4963번] 섬의 개수 (0) | 2023.08.20 |
[백준, 11724번] 연결 요소의 개수 (0) | 2023.08.15 |
[백준, 1697번] 숨바꼭질 (0) | 2023.08.15 |
[백준, 7576번] 토마토 (0) | 2023.08.14 |