๋ฌธ์ œ ํ•ด๊ฒฐ (PS)/์ฝ”ํ…Œ TIL

[Java] ๋ฒจ๋งŒ-ํฌ๋“œ | ๋ฐฑ์ค€ 1865 ์›œํ™€

9taetae9 2024. 11. 1. 10:59
728x90

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

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜ ํžŒํŠธ๋ฅผ ๋ณด๊ณ  ๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•™์Šตํ•œ ๋’ค์— ํ’€์–ด๋ณด์•˜๋‹ค. ์•„์ง ์–ด๋ ต๊ฒŒ ๋А๊ปด์ง€๋Š” ๋ฌธ์ œ์—ฌ์„œ ๋‚ด๊ฐ€ ํ’€๋ฉด์„œ ๋†“์น˜๊ณ  ์žˆ์—ˆ๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ํฌ์ธํŠธ๋“ค์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

์–‘๋ฐฉํ–ฅ ๋„๋กœ ์ฒ˜๋ฆฌ
์ฒ˜์Œ ๋‚ด ์ฝ”๋“œ์—์„œ๋Š” ๋„๋กœ๋ฅผ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๋„๋กœ๋Š” ์–‘๋ฐฉํ–ฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„๋กœ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•, ์–‘์ชฝ ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

for (int i = 0; i < m; i++) {
    edges.add(new Edge(station[i][0], station[i][1], station[i][2]));
    edges.add(new Edge(station[i][1], station[i][0], station[i][2]));
}

 

์ผ๋ฐ˜์ ์ธ ๋ฒจ๋งŒ-ํฌ๋“œ์—์„œ INF๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Arrays.fill(dist, INF);
dist[start] = 0;
  • ๋ณดํ†ต "ํŠน์ • ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ"๋ฅผ ๊ตฌํ•  ๋•Œ ๋งค์šฐ ํฐ ๊ฐ’(INF)์„ dist ๋ฐฐ์—ด์— ๋„ฃ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.
  • ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ๋“ค์€ "๋„๋‹ฌํ•  ์ˆ˜ ์—†์Œ"์„ ์˜๋ฏธํ•˜๋Š” INF๋กœ ํ‘œ์‹œํ•˜๋Š”๋ฐ,
  • ์ด๊ฒƒ์€ ์‹ค์ œ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์•ผ ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐฉ์‹์ด๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ์—์„œ๋Š” dist๋ฐฐ์—ด์„ INF๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ์ง€ ์•Š๊ณ  0์œผ๋กœ๋งŒ ์ดˆ๊ธฐํ™”์‹œ์ผœ์ฃผ์–ด๋„ ์ถฉ๋ถ„ํ–ˆ๋‹ค.

0์œผ๋กœ๋งŒ ์ดˆ๊ธฐํ™”ํ•ด๋„ ๋˜๋Š” ์ด์œ 

Arrays.fill(dist, 0);
  • ์ด ๋ฌธ์ œ๋Š” ์Œ์˜ ์‚ฌ์ดํด์˜ ์กด์žฌ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
  • ์Œ์˜ ์‚ฌ์ดํด์€ ์–ด๋–ค ์ •์ ์—์„œ ์‹œ์ž‘ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ„์„ ์„ ๊ฑฐ์นœ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘์ ์œผ๋กœ ๋Œ์•„์™”์„ ๋•Œ, ์ด ๊ฑฐ๋ฆฌ๊ฐ€ ์Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
  • ๋ชจ๋“  ์ •์ ์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด
    • ์–ด๋–ค ์ •์ ์—์„œ ์‹œ์ž‘ํ•˜๋“  ์ดˆ๊ธฐ๊ฐ’์ด 0์ด๋‹ค.
    • ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋ฉด ๊ทธ ์‚ฌ์ดํด์„ ๋Œ๋ฉด์„œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ณ„์† ๊ฐ์†Œํ•  ๊ฒƒ์ด๋‹ค
    • ์Œ์˜ ์‚ฌ์ดํด์ด ์žˆ๋‹ค๋ฉด V๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ๋„ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐฑ์‹ ๋œ๋‹ค.

 

 

์ด ๋ฌธ์ œ๋Š” ๋” ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์ต์ˆ™ํ•ด์ง€๋ฉด ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด๋ คํ•œ๋‹ค.

 

728x90