We will find a way, we always have.

-interstellar

Problem Solving/๋ฐฑ์ค€

[๋ฐฑ์ค€] 14621๋ฒˆ: ๋‚˜๋งŒ ์•ˆ๋˜๋Š” ์—ฐ์•  - ํŒŒ์ด์ฌ

Redddy 2022. 10. 8. 20:16

๐Ÿ”ˆ ๋ฌธ์ œ

๊นฝ๋ฏธ๋Š” 24์‚ด ๋ชจํƒœ์†”๋กœ์ด๋‹ค. ๊นฝ๋ฏธ๋Š” ๋Œ€๋งˆ๋ฒ•์‚ฌ๊ฐ€ ๋  ์ˆœ ์—†๋‹ค๋ฉฐ ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Šฅ๋ ฅ์„ ์ด์šฉํ•˜์—ฌ ๋ฏธํŒ… ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ๋ฏธํŒ… ์•ฑ์€ ๋Œ€ํ•™์ƒ์„ ํƒ€๊ฒŸ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ๋Œ€ํ•™๊ต๊ฐ„์˜ ๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๋งŒ๋“ค์—ˆ๋‹ค.
์ด ์•ฑ์€ ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด ์‚ฌ์‹ฌ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” 3๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  1. ์‚ฌ์‹ฌ ๊ฒฝ๋กœ๋Š” ์‚ฌ์šฉ์ž๋“ค์˜ ์‚ฌ์‹ฌ์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋‚จ์ดˆ ๋Œ€ํ•™๊ต์™€ ์—ฌ์ดˆ ๋Œ€ํ•™๊ต๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๋“ค์ด ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๊ณผ ๋ฏธํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋–ค ๋Œ€ํ•™๊ต์—์„œ๋“  ๋ชจ๋“  ๋Œ€ํ•™๊ต๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ์ด๋‹ค.
  3. ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๊ณ  ๋ฏธํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๋„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ์•ฝ ์™ผ์ชฝ์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์˜ ๋ณด๋ผ์ƒ‰ ์„ ๊ณผ ๊ฐ™์ด ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์œ„์˜ 3๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜ํ”„

์ด๋•Œ, ์ฃผ์–ด์ง€๋Š” ๊ฑฐ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์‹ฌ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด๋ณด์ž.

 

๐Ÿ“์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— ํ•™๊ต์˜ ์ˆ˜ $ N $์™€ ํ•™๊ต๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ์˜ ๊ฐœ์ˆ˜ $ M $์ด ์ฃผ์–ด์ง„๋‹ค. $ (2 ≤ N ≤ 1,000) $ $ (1 ≤ M ≤ 10,000) $
๋‘˜์งธ ์ค„์— ๊ฐ ํ•™๊ต๊ฐ€ ๋‚จ์ดˆ ๋Œ€ํ•™๊ต๋ผ๋ฉด $ M $, ์—ฌ์ดˆ ๋Œ€ํ•™๊ต๋ผ๋ฉด $ W $ ์ด ์ฃผ์–ด์ง„๋‹ค.
๋‹ค์Œ $ M $๊ฐœ์˜ ์ค„์— u, v, d๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ uํ•™๊ต์™€ vํ•™๊ต๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด ๊ฑฐ๋ฆฌ๋Š” d์ž„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. $  (1 ≤ u, v ≤ N) $,
$ (1 ≤ d ≤ 1,000) $

 

๐Ÿ“‘์ถœ๋ ฅ

๊นฝ๋ฏธ๊ฐ€ ๋งŒ๋“  ์•ฑ์˜ ๊ฒฝ๋กœ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. (๋ชจ๋“  ํ•™๊ต๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ -1์„ ์ถœ๋ ฅํ•œ๋‹ค.)

 

๐Ÿ“š ๋ฌธ์ œ ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ, ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

๊ฐ„์„ ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ๊ฐ„์„ ์„ ๋ฝ‘์•„๋‚ด๋Š”๋Œ€ ์ด๋•Œ ์ด์–ด์ฃผ๊ณ  ์žˆ๋Š” ํ•™๊ต๊ฐ€ ๊ฐ™์€ ์„ฑ๋ณ„์˜ ํ•™๊ต๋ผ๋ฉด ๊ทธ ๊ฐ„์„ ์€ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— ๋ชจ๋“  ํ•™๊ต๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ -1์„ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ•˜์˜€๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ๋Š” ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋œปํ•œ๋‹ค. ์ฆ‰ ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜๊ฐ€ n-1๊ฐœ๊ฐ€ ๋˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ฒ˜์Œ์— ๋†“์ณค๋‹ค.ใ…Ž

 

 

๐Ÿ’ป ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import sys, heapq
input = sys.stdin.readline
 
 
def find_parent(parent, x):
    if parent[x] != x:
        parent[x] = find_parent(parent, parent[x])
    return parent[x]
 
def union_parent(parent, a,b):
    a = find_parent(parent, a)
    b = find_parent(parent, b)
    if a<b:
        parent[b] = a
    elif a>b:
        parent[a] = b
 
 
n,m = map(int,input().split())
# ๊ฐฏ์ˆ˜ ๋งž์ถฐ์ฃผ๊ธฐ ์œ„ํ•ด N์„ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์—
sex = ["N"]+list(map(str,input().rstrip().split()))
parent = [i for i in range(n+1)]
= []
ans = 0
stop = n-1
for _ in range(m):
    u,v,d = map(int,input().split())
    heapq.heappush(h, [d,u,v])
 
while h:
    cost, a,b = heapq.heappop(h)
    # ๊ฐ™์€ ์„ฑ๋ณ„์˜ ํ•™๊ต๋ผ๋ฉด ๋ฌด์‹œ
    if sex[a] == sex[b]:
        continue
 
    if find_parent(parent,a) != find_parent(parent,b):
        union_parent(parent,a,b)
        ans += cost
        stop -= 1
    # ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ๋˜์—ˆ๋‹ค๋ฉด ans ์ถœ๋ ฅํ›„ ์ข…๋ฃŒ
    if stop == 0:
        print(ans)
        exit()
print(-1# ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์™„์„ฑํ•˜์ง€ ๋ชปํ•˜๊ณ  while๋ฌธ์— ๋‚˜์™”๋‹ค๋ฉด -1 
cs

 

๐Ÿญ ์‹œํ–‰์ฐฉ์˜ค

 

๐Ÿ”— ๋ฌธ์ œ๋งํฌ ๋‚˜๋งŒ ์•ˆ๋˜๋Š” ์—ฐ์• 

 

14621๋ฒˆ: ๋‚˜๋งŒ ์•ˆ๋˜๋Š” ์—ฐ์• 

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— ํ•™๊ต์˜ ์ˆ˜ N์™€ ํ•™๊ต๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 1,000) (1 ≤ M ≤ 10,000) ๋‘˜์งธ ์ค„์— ๊ฐ ํ•™๊ต๊ฐ€ ๋‚จ์ดˆ ๋Œ€ํ•™๊ต๋ผ๋ฉด M, ์—ฌ์ดˆ ๋Œ€ํ•™๊ต๋ผ๋ฉด W์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ M๊ฐœ์˜

www.acmicpc.net