Hiya_
๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ
Hiya_
Github
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (154)
    • ๐Ÿ’ปBackend (10)
      • ๋ผ์ด์ง•์บ ํ”„ (6)
      • SSAFY | ์‹ธํ”ผ (2)
      • ์‹ ํ•œDS ๊ธˆ์œตSW ์•„์นด๋ฐ๋ฏธ (2)
    • ๐Ÿ“๋ฌธ์ œ ํ’€์ด (102)
      • ๐ŸงฉBaekjoon (47)
      • ๐ŸงฉProgrammers (42)
      • ๐ŸงฉSWExpertAcademy (10)
      • ๐ŸงฉSofteer (3)
    • ๐Ÿ“‚Language (31)
      • Python (3)
      • JAVA (2)
      • SQL (6)
      • English (19)
    • โœจUseful information (5)
    • ๐Ÿ”‘Algorithms (3)
    • ๐Ÿ™Git (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋ฐฑ์ค€
  • Union
  • BFS
  • ๊ทธ๋ฆฌ๋””
  • ํ† ์ต๊ณต๋ถ€
  • ํ† ์ต์ ์ˆ˜
  • mysql
  • ํ† ์ต๋ฌด๋ฃŒ์ž๋ฃŒ
  • greedy algorithm
  • ์™„์ „ํƒ์ƒ‰
  • ํ† ์ตRC
  • 2์ฐจ์› ๋ฐฐ์—ด
  • ์ฝ”ํ…Œ
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ํ•ด์ปค์ŠคํŒŒ๋žญ์ด
  • ๋‹ค์ต์ŠคํŠธ๋ผ
  • ํ† ์ต๋ฌด๋ฃŒ๊ฐ•์˜
  • ๋ฆฌ์ŠคํŠธ
  • ์˜ค๋ธ”์™„
  • ๋‚ด์žฅํ•จ์ˆ˜
  • ์ •๋ ฌ
  • ํ† ์ต์‹œํ—˜
  • BaekJoon
  • ํ† ์ต๊ธฐ์ถœ
  • Python
  • ํ† ์ต๋…ํ•™
  • ํ•ด์ปค์Šคํ† ์ต
  • UNION ALL
  • ๊ตฌํ˜„
  • sort

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ


Owner : ๊น€์‹ ์˜
Naver Blog

hELLO ยท Designed By ์ •์ƒ์šฐ.
Hiya_

๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ

๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉBaekjoon

[Python] ๋ฐฑ์ค€ 18352 ํŠน์ • ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ ์ฐพ๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

2023. 5. 16. 18:49

 

~๋ชฉ์ฐจ~

๋ฌธ์ œ

๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ

์ž‘์„ฑ ์ฝ”๋“œ


 

๋ฌธ์ œ

https://www.acmicpc.net/problem/18352

 

18352๋ฒˆ: ํŠน์ • ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ ์ฐพ๊ธฐ

์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ N, ๋„๋กœ์˜ ๊ฐœ์ˆ˜ M, ๊ฑฐ๋ฆฌ ์ •๋ณด K, ์ถœ๋ฐœ ๋„์‹œ์˜ ๋ฒˆํ˜ธ X๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ๋‘ ๊ฐœ

www.acmicpc.net

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ

- ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

- distance : X๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ. ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฌดํ•œ์ˆ˜(INF)

- graph : ๊ฐ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •๋ณด (์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

- q : ์ง€๊ธˆ๊นŒ์ง€ ๊ณ„์‚ฐ ๋œ ๊ฑฐ๋ฆฌ ์ค‘ ๊ฐ„์„ ์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)

 

์ƒ์„ธํ•œ ์„ค๋ช…์€ ์ฃผ์„์„ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค 

 

 

 

์ž‘์„ฑ ์ฝ”๋“œ

import sys
import heapq
input = sys.stdin.readline
INF = int(1e9)

N, M, K, X = map(int, input().split())  # ๋…ธ๋“œ์ˆ˜, ๊ฐ„์„ ์ˆ˜, ๋ชฉํ‘œ ๊ฑฐ๋ฆฌ, ์‹œ์ž‘ ๋…ธ๋“œ
graph = [[] for _ in range(N+1)]  # ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
distance = [INF]*(N+1)  # X๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ ์ตœ์†Œ ๊ฑฐ๋ฆฌ, ๋ฌดํ•œ์ˆ˜๋กœ ์ดˆ๊ธฐํ™”

# ๊ฐ ๊ฐ„์„  ์—ฐ๊ฒฐ
for _ in range(M):
    a, b = map(int, input().split())
    graph[a].append(b)

def dijkstra(start):
    q = []
    distance[start] = 0  # start ๋…ธ๋“œ ๊ฑฐ๋ฆฌ ์ดˆ๊ธฐํ™”
    heapq.heappush(q, (0, start))  # ์šฐ์„ ์ˆœ์œ„ ํ์— (๊ฑฐ๋ฆฌ, ์‹œ์ž‘ ๋…ธ๋“œ) ์‚ฝ์ž…

    while q:  # ํ์— ๊ฐ’์ด ์žˆ์„ ๋™์•ˆ
        dist, now = heapq.heappop(q)  # ์šฐ์„ ์ˆœ์œ„ ํ์— ์กด์žฌํ•˜๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ๋…ธ๋“œ
        if distance[now] < dist:  # ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ
            continue
        for i in graph[now]:  # now๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ
            cost = 1 + dist  # 1 + now๋…ธ๋“œ์˜ ์ตœ์†Œ ๊ฑฐ๋ฆฌ
            if cost < distance[i]:  # now -> i ๊ฑฐ๋ฆฌ๊ฐ€ ์ž‘๋‹ค๋ฉด
                distance[i] = cost  # ์—…๋ฐ์ดํŠธ
                heapq.heappush(q, (cost, i))  # ์šฐ์„ ์ˆœ์œ„ ํ ์‚ฝ์ž…


dijkstra(X)  # ์‹คํ–‰ ํ›„ X๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋–จ์–ด์ง„ ์ตœ์†Œ ๊ฑฐ๋ฆฌ distance ์ž‘์„ฑ ์™„๋ฃŒ

flag = False  # K์™€ ์ผ์น˜ํ•˜๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํŒ๋‹จ
for i in range(1, N+1):
    if distance[i] == K:
        flag = True  # ์ผ์น˜ ํ•˜๋Š” ๊ฒƒ ์กด์žฌ
        print(i)
if not flag:  # ์ผ์น˜ํ•˜๋Š” ๊ฒƒ ์กด์žฌํ•˜์ง€ ์•Š์Œ
    print(-1)

 

 

 

๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ข‹์•„์š” ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”๐Ÿ’š

 

'๐Ÿ“๋ฌธ์ œ ํ’€์ด > ๐ŸงฉBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ๋ฐฑ์ค€ 1916 ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ | ์‹œ๊ฐ„์ดˆ๊ณผ  (0) 2023.05.17
[Python] ๋ฐฑ์ค€ 11404 ํ”Œ๋กœ์ด๋“œ | ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ  (0) 2023.05.16
[Python] ๋ฐฑ์ค€ 1753 ์ตœ๋‹จ ๊ฒฝ๋กœ | ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜  (0) 2023.05.16
[Python] ๋ฐฑ์ค€ 1463 1๋กœ ๋งŒ๋“ค๊ธฐ | DP  (0) 2023.05.15
[Python] ๋ฐฑ์ค€ 9663 N-Queen | ์‹œ๊ฐ„์ดˆ๊ณผ  (2) 2023.04.18
    '๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ๋ฐฑ์ค€ 1916 ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ | ์‹œ๊ฐ„์ดˆ๊ณผ
    • [Python] ๋ฐฑ์ค€ 11404 ํ”Œ๋กœ์ด๋“œ | ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ
    • [Python] ๋ฐฑ์ค€ 1753 ์ตœ๋‹จ ๊ฒฝ๋กœ | ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • [Python] ๋ฐฑ์ค€ 1463 1๋กœ ๋งŒ๋“ค๊ธฐ | DP
    Hiya_
    Hiya_
    ํ•˜์–€ ์ฒœ๊ณผ ๋ฐ”๋žŒ๋งŒ ์žˆ๋‹ค๋ฉด ์–ด๋””๋“  ๊ฐˆ ์ˆ˜ ์žˆ์–ด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”