효율적인 해킹
last update: 2021.09.08.WED
1325 효율적인 해킹, Silver 2
Memory 206584KB, Time 13400ms
- 시간 문제로 이번에는 PyPy3을 이용했다.
- 하지만 그럼에도 불구하고 메모리나 시간을 너무 잡아먹는다. 더 나은 방법을 찾아야겠다.
- 백준의 알고리즘 분류를 보면 트리나 해시를 이용하는 문제인 것 같으니 추후 다시 풀어봐야겠다.
import sys
from collections import deque
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
a, b = map(int, sys.stdin.readline().split())
graph[b].append(a)
result = []
max_count = -1
for i in range(1, n+1):
visited = [False]*(n+1)
q = deque([i])
visited[i] = True
count = 1
while q:
curr = q.popleft()
for num in graph[curr]:
if visited[num] == False:
q.append(num)
visited[num] = True
count += 1
if count > max_count:
max_count = count
result = []
result.append(i)
elif max_count == count:
result.append(i)
for i in range(len(result)):
print(result[i], end=" ")
- 출력 초과가 났던 코드
import sys
from collections import deque
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
a, b = map(int, sys.stdin.readline().split())
graph[b].append(a)
result = []
max_count = -1
for i in range(1, n+1):
visited = [False]*(n+1)
q = deque([i])
count = 1
while q:
curr = q.popleft()
for num in graph[curr]:
if visited[num] == False:
q.append(num)
visited[num] = True
count += 1
if count > max_count:
max_count = count
result = []
result.append(i)
elif max_count == count:
result.append(i)
result.sort()
for i in range(len(result)):
print(result[i], end=" ")