어읽로꾸거
BOJ 6118 숨바꼭질 본문
백준 6118 링크
https://www.acmicpc.net/problem/6118
6118번: 숨바꼭질
문제 재서기는 수혀니와 교외 농장에서 숨바꼭질을 하고 있다. 농장에는 헛간이 많이 널려있고 재석이는 그 중에 하나에 숨어야 한다. 헛간의 개수는 N(2 <= N <= 20,000)개이며, 1 부터 샌다고 하자. 재서기는 수혀니가 1번 헛간부터 찾을 것을 알고 있다. 모든 헛간은 M(1<= M <= 50,000)개의 양방향 길로 이어져 있고, 그 양 끝을 A_i 와 B_i(1<= A_i <= N; 1 <= B_i <= N; A_i != B_i)로 나타낸
www.acmicpc.net
풀이
그냥 다익스트라
코드
#파이썬pq는 최소힙
import heapq as pq
input = __import__('sys').stdin.readline
n,m = map(int, input().split())
con = [[] for _ in range(n+1)]
dp=[float("inf")]*(n+1)
for _ in range(m):
a,b = map(int, input().split())
con[a].append(b);con[b].append(a)
q=[(0,1)]
dp[1]=dp[0]=0
while q:
cost,n=pq.heappop(q)
if cost!=dp[n]:continue
for i in con[n]:
if dp[i]>cost+1:
dp[i]=cost+1
pq.heappush(q,(cost+1, i))
mx=max(dp)
cnt=0
ch=True
for i in range(1,n+1):
if mx==dp[i]:
cnt+=1
if ch:
print(i,end=' ')
ch=False
print(mx, cnt)
'알고리즘' 카테고리의 다른 글
BOJ 6186 Best Grass (0) | 2019.04.23 |
---|---|
BOJ 13549 숨바꼭질3 (0) | 2019.04.22 |
BOJ 6087 레이저 통신 (0) | 2019.04.18 |
BOJ 1926 그림 (0) | 2019.04.17 |
BOJ 2206 벽 부수고 이동하기 (0) | 2019.04.16 |