관리 메뉴

어읽로꾸거

BOJ 6118 숨바꼭질 본문

알고리즘

BOJ 6118 숨바꼭질

어읽로꾸거 2019. 4. 19. 22:43

백준 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