๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/Shortest Path6

[๋ฐฑ์ค€]1753๋ฒˆ: ์ตœ๋‹จ๊ฒฝ๋กœ https://www.acmicpc.net/problem/1753 1753๋ฒˆ: ์ตœ๋‹จ๊ฒฝ๋กœ ์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ V์™€ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) ๋ชจ๋“  ์ •์ ์—๋Š” 1๋ถ€ํ„ฐ V๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์‹œ์ž‘ ์ •์ ์˜ ๋ฒˆํ˜ธ K(1 ≤ K ≤ V)๊ฐ€ www.acmicpc.net ๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์กŒ์œผ๋ฏ€๋กœ, ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ •์ ์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ ๋งค์šฐ ๋งŽ์œผ๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ–ˆ๋‹ค. https://catromi.tistory.com/65 ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ (python) ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm) -ํŠน์ • ๋…ธ๋“œ์—.. 2023. 2. 28.
[๋ฐฑ์ค€]18352๋ฒˆ: ํŠน์ • ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ ์ฐพ๊ธฐ 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 ๋‹ค์ต์ŠคํŠธ๋ผ 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) for _ in range(m): a, .. 2023. 2. 28.
Floyd-Warshall ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„(python) Floyd-Warshall ์•Œ๊ณ ๋ฆฌ์ฆ˜ -์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ -๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ๊ฑฐ์ณ๊ฐ€๋Š” ๋…ธ๋“œ k๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค -์ฆ‰, a->b๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ๊ฑฐ๋ฆฌ์™€ k๋ฅผ ๊ฑฐ์ณ ๊ฐ€๋Š” a->k->b์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ๊ฐฑ์‹ ํ•œ๋‹ค. -2์ฐจ์› ํ…Œ์ด๋ธ”์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค (dp์ž„) ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 1) ์ตœ๋‹จ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. (๊ฐ ๋…ธ๋“œ์—์„œ ์ธ์ ‘ํ•œ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์„ ๊ธฐ๋ก) 2) ๊ฐ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ๊ฐ€๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๋ฉฐ ํ…Œ์ด๋ธ”์„ ๊ฐฑ์‹ ํ•œ๋‹ค. ํŒŒ์ด์ฌ ์ฝ”๋“œ import sys input = sys.stdin.readline INF = int(1e9) #๋งค์šฐ ํฐ ์ˆซ์ž์ธ 10์–ต์„ ๋ฌดํ•œ๋Œ€๋กœ ์ •์˜ํ•œ๋‹ค #n(๋…ธ๋“œ ์ˆ˜), m(๊ฐ„์„  ์ˆ˜) ์ž…๋ ฅ๋ฐ›๊ธฐ n,m = map(int,input().split()) #์ตœ.. 2023. 2. 28.
๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ (python) ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm) -ํŠน์ • ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ณ„์‚ฐ -๋งค ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ๋น„์šฉ์ด ์ ๊ฒŒ ๋“œ๋Š” ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค (๊ทธ๋ฆฌ๋””์ž„) -๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์–‘์ˆ˜์ผ ๋•Œ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 1) ์ตœ๋‹จ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. (์ถœ๋ฐœ๋…ธ๋“œ๋Š” 0, ๋‚˜๋จธ์ง€๋Š” INF) 2) ํ˜„์žฌ ๋…ธ๋“œ์™€ ์ธ์ ‘ํ•˜๊ณ  ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ ์ค‘ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ๋…ธ๋“œ๋ฅผ ์„ ํƒ 3) 2์—์„œ ์„ ํƒํ•œ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๋น„์šฉ์„ ๊ณ„์‚ฐ, ์ตœ๋‹จ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ”์„ ๊ฐฑ์‹  4) 2,3๋ฒˆ ๊ณผ์ • ๋ฐ˜๋ณต ํ˜„์žฌ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ๋…ธ๋“œ ์„ ํƒํ•˜๊ธฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋งค๋ฒˆ ๋ชจ๋‘ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ ํ˜•ํƒ์ƒ‰์œผ๋กœ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ€ ์งง์€ ๋…ธ๋“œ๋ฅผ ์„ ํƒ.. 2023. 2. 28.
[์ด์ฝ”ํ…Œ]๋ฏธ๋ž˜ ๋„์‹œ Floyd-Warshall ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋…ธ๋“œ๊ฐ„ ์ตœ๋‹จ๊ฒฝ๋กœ ๊ตฌํ•œ๋‹ค 1~k๊นŒ์ง€ ์ตœ๋‹จ๊ฑฐ๋ฆฌ + k~x๊นŒ์ง€ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๊ตฌํ•œ๋‹ค import sys input = sys.stdin.readline INF = int(1e9) n, m = map(int, input().split()) graph=[[INF]*(n+1) for _ in range(n+1)] for i in range(1,n+1): for j in range(1,n+1): if i==j: graph[i][j]=0 for _ in range(m): x,y = map(int,input().split()) graph[x][y]=1 graph[y][x]=1 x, k = map(int,input().split()) for k in range(1,n+1): for i i.. 2023. 2. 27.
[์ด์ฝ”ํ…Œ]์ „๋ณด ์ถœ์ฒ˜: ์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ https://www.youtube.com/watch?v=acqm9mM1P6o&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=7 ๋ฌธ์ œ ์–ด๋–ค ๋‚˜๋ผ์—๋Š” N๊ฐœ์˜ ๋„์‹œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋„์‹œ๋Š” ๋ณด๋‚ด๊ณ ์ž ํ•˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋„์‹œ๋กœ ์ „๋ณด๋ฅผ ๋ณด๋‚ด์„œ ๋‹ค๋ฅธ ๋„์‹œ๋กœ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ X๋ผ๋Š” ๋„์‹œ์—์„œ Y๋ผ๋А ใ„ด๋„์‹œ๋กœ ์ „๋ณด๋ฅผ ๋ณด๋‚ด๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๋„์‹œ X์—์„œ Y๋กœ ํ–ฅํ•˜๋Š” ํ†ต๋กœ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด X์—์„œ Y๋กœ ํ–ฅํ•˜๋Š” ํ†ต๋กœ๋Š” ์žˆ์ง€๋งŒ, Y์—์„œ X๋กœ ํ–ฅํ•˜๋Š” ํ†ต๋กœ๊ฐ€ ์—†๋‹ค๋ฉด Y๋Š” X๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†๋‹ค. ๋˜ํ•œ ํ†ต๋กœ๋ฅผ ๊ฑฐ์ณ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š” ์ผ์ • ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ์–ด๋А ๋‚  C๋ผ๋Š” ๋„์‹œ์—์„œ ์œ„๊ธ‰.. 2023. 2. 27.
728x90