새소식

반응형
Algotithms

[백준] 1325 효율적인 해킹

  • -
728x90
반응형

문제

  • N개의 컴퓨터는 신뢰하는 관계와 신뢰하지 않는 관계로 이뤄져 있다.
  • A가 B를 신뢰하는 경우, B를 해킹하면 A도 해킹할 수 있다.
  • N개의 컴퓨터들 간의 신뢰하는 관계가 주어질 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호 출력하기\

 

  • 1 <= N <= 10,000
  • 1 <= 신뢰 관계 개수 <= 100,000

 

풀이 1

  • DFS 또는 BFS로 연결된 컴퓨터의 개수를 모두 센다
pypy 로만 통과한다. -> 시간초과
import sys
from collections import deque
input = sys.stdin.readline

def counting(graph, node) :
    q = deque([node])
    cnt = 0
    visited = [False] * (N+1)
    visited[node] = True

    while q :
        node = q.popleft()
        cnt += 1

        for nxt in graph[node] :
            if not visited[nxt] :
                q.append(nxt)
                visited[nxt] = True
    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)

# 해킹 가능한 컴퓨터 수 계산하기
answer = [0] * (N+1)
for i in range(1, N+1) :
    answer[i] = counting(graph, i)

# 가장 많이 해킹 가능한 컴퓨터 번호 출력
maximum = max(answer)
for i in range(1, N+1) :
    if answer[i] == maximum :
        print(i, end=' ')

 

 

 

 

References

  • 백준 그래프 탐색
반응형

'Algotithms' 카테고리의 다른 글

[2019 KAKAO BLIND RECRUITMENT] 길 찾기 게임  (0) 2023.09.03
[백준] 1058 친구  (0) 2023.09.03
[백준] 5597 과제 안 내신 분..?  (0) 2023.09.03
[백준] 1535 안녕  (0) 2023.09.03
[백준] 1758 알바생 강호  (0) 2023.09.03
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.