728x90
https://www.acmicpc.net/problem/10282
10282번: 해킹
최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면
www.acmicpc.net
의존성을 확인하기위해 단방향 그래프를 그리고 다익스트라를 사용해서 그래프 탐색을 하면 된다.
import sys; input = sys.stdin.readline
from heapq import heappush, heappop
def dijkstra(start, size, adj_list):
ret = [0, 0]
h = [(0, start)]
visit = [0 for _ in range(size + 1)]
while h:
dist, cur = heappop(h)
if visit[cur]: continue
visit[cur] = 1
ret[1] = max(ret[1], dist)
for adj_dist, adj in adj_list[cur]:
heappush(h, (adj_dist + dist, adj))
ret[0] = sum(visit)
return ret
def main():
answer = []
for _ in range(int(input())):
# 1 input
n, d, c = map(int, input().split())
adj_list = [[] for _ in range(n + 1)]
for _ in range(d):
a, b, s = map(int, input().split())
adj_list[b].append((s, a))
# 2 dijkstra and output
answer.append(dijkstra(c, n, adj_list))
for a in answer:
print(*a)
if __name__ == "__main__":
main()
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 11779 최소비용 구하기 2 python (0) | 2022.02.15 |
---|---|
[백준] 6087 레이저 통신 python (0) | 2022.02.14 |
[프로그래머스] Level 3 섬 연결하기 python (0) | 2022.02.14 |
[백준] 11404 플로이드 C++, python (0) | 2022.02.13 |
[백준] 2160 그림비교 c++ (0) | 2022.02.12 |