[python]Baek Jun 1325-ハッカー問題を効率的に解決
8014 ワード
Overview
BOJ 1325号はPython問題を効率的に解決する
分類:グラフィック変換(グラフィックナビゲーション)グラフィックヘンカン
質問ページ
https://www.acmicpc.net/problem/1325
プールコード
from sys import stdin
from collections import defaultdict, deque
def bfs(start: int, n: int, graph: defaultdict[int]) -> int:
visit = [False] * (n + 1)
cnt = 0
dq = deque([start])
visit[start] = True
while dq:
node = dq.pop()
for neighbor in graph[node]:
if not visit[neighbor]:
visit[neighbor] = True
dq.append(neighbor)
cnt += 1
return cnt
def main():
def input():
return stdin.readline().rstrip()
n, m = map(int, input().split())
graph = defaultdict(list)
for _ in range(m):
a, b = map(int, input().split())
graph[b].append(a)
res = []
max_cnt = 0
for i in range(1, n + 1):
cnt = bfs(i, n, graph)
if cnt > max_cnt:
max_cnt = cnt
res = [i]
elif cnt == max_cnt:
res.append(i)
print(*sorted(res), sep=' ')
if __name__ == "__main__":
main()
pypy 3の採点結果が合格しました.bfsを用いてハッカーに攻撃される可能性のあるコンピュータの数を理解し,答えを求める.グラフィックは双方向ではなく一方向なので、Union Findは使用できません.dfsを使用するとメモリがオーバーフローします.
Reference
この問題について([python]Baek Jun 1325-ハッカー問題を効率的に解決), 我々は、より多くの情報をここで見つけました https://velog.io/@boorook/Python-백준-1325-효율적인-해킹-문제-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol