์ด๋ ค์ ๋ ๋ฌธ์ ๋ ์ค์ค๋ก ์๋ธํด๋ ๋ค๋ฅธ ์ฌ๋ ํ์ด๋ ๋น๊ตํ๊ธฐ ์ํด์ ๊ฒ์์ ํด๋ณด๋๋ฐ ํผ ์ฌ๋์ด ๋ณ๋ก ์์ด์ ๊ฒ์ํด๋ ์๋์์ ์ฌํ๋น...
๋ด ๋ต์ด ์ต์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ ์ผ๋จ ํ์๊ณ ํผ ์ฌ๋์ด ๋ณ๋ก ์์ด์ ๋๋ผ๋ ๋ฆฌ๋ทฐ๋ฅผ ์จ๋์ผ์ง,,๐
์ผ๋จ ๋๋ BFS + ์ฐ์ ์์Q๋ก ํ์๋ค.
๋์ ๋๋ฆฌ๋ฅผ ๋ง๋ค๊ณ x๋ฅผ key๋ก y๋ฅผ value๋ก ๋๊ณ , value๋ ์ฐ์ ์์Q ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅํ๋ค.
(๊ฟ์ ๋ ํฐ ์๋ก ์ด๋ํ๊ณ N์ด ๊ฐ์ฅ ํฌ๊ธฐ ๋๋ฌธ์ N์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋ฐ๋ก ๊ทธ๋ง ํ ์ ์๊ฒํ๊ธฐ ์ํจ)
๊ทธ๋ฆฌ๊ณ queue์ ํ์ฌ ์์น์ ํ์ฌ ์ํฉ์ด ๋ฐ๋ ํ์๋ฅผ ์ ์ฅํ๋ฉฐ BFS๋ฅผ ํ๋ค.
N์ ๋ง๋๋ฉด ๊ทธ๋งํ๋ค. (bfs๋๊น ์ฒ์๋ง๋ ๋ ์ต์)
Result
import sys
from collections import defaultdict
from collections import deque
import heapq
n,m = map(int, sys.stdin.readline().split())
dic=defaultdict(list)
for i in range(m):
a,b = map(int,sys.stdin.readline().split())
#๋ด๋ฆผ์ฐจ์์ผ๋ก heap์ ๋ฃ์
heapq.heappush(dic[a],-b)
res = -1
q=deque([[1,0]])
while q:
num,cnt=q.popleft()
for i in range(len(dic[num])):
#๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฃ์์ผ๋๊น ๋์ฌ ๋ *-1
temp = -1*heapq.heappop(dic[num])
if temp == n:
res=cnt+1
break
else:
q.append([temp,cnt+1])
if res != -1:
break
print(res)
'๐ Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1208 (0) | 2021.03.08 |
---|---|
[Python] ๋ฐฑ์ค 1167, 1967 (0) | 2021.03.08 |
[Python] ๋ฐฑ์ค 2089 (0) | 2021.03.04 |
[Python] ๋ฐฑ์ค 1442 (0) | 2021.02.25 |
[Python] ๋ฐฑ์ค 6549 (0) | 2021.02.20 |