개미의 개열시미 프로그래밍

[알고리즘] 백준1325 효율적인 해킹 - 파이썬 본문

알고리즘/DFS, BFS, 백트래킹

[알고리즘] 백준1325 효율적인 해킹 - 파이썬

YunHyeok 2021. 11. 26. 21:53
728x90
반응형

https://www.acmicpc.net/problem/1325

 

1325번: 효율적인 해킹

첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한

www.acmicpc.net

 

 

[풀이 코드]

from collections import deque
from sys import stdin
input = stdin.readline

def bfs(v):
    queue = deque([v])
    cnt = 1
    visited = [False] * (n+1)
    visited[v] = True
    while queue:
        x = queue.popleft()
        for i in graph[x]:
            if not visited[i]:
                visited[i] = True
                queue.append(i)
                cnt += 1
    return cnt

n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
    a, b = map(int, input().split())
    graph[b].append(a)

result = []
for i in range(1, n+1):
    result.append(bfs(i))

max = max(result)
for i in range(len(result)):
    if max == result[i]:
        print(i+1, end=' ')

- 문제를 이해하는데 어렵지 않았지만 메모리 초과가 왜 자꾸 나는지.. 이유는 visited배열로 방문 기록을 하지 않아서였다..

 

- "A가 B를 신뢰한다" 이 문구에 맞춰 graph[b].append(a) 이런 식으로 코드를 작성한 부분이 다른 문제와 다른 점인 것 같다.

728x90
반응형
Comments