We will find a way, we always have.

-interstellar

Problem Solving/๋ฐฑ์ค€

[๋ฐฑ์ค€] 2637๋ฒˆ: ์žฅ๋‚œ๊ฐ ์กฐ๋ฆฝ - ํŒŒ์ด์ฌ

Redddy 2023. 7. 30. 18:57

๐Ÿ”ˆ ๋ฌธ์ œ

 ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์žฅ๋‚œ๊ฐ์„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ€ํ’ˆ์œผ๋กœ ์กฐ๋ฆฝํ•˜์—ฌ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์ด ์žฅ๋‚œ๊ฐ์„ ๋งŒ๋“œ๋Š”๋ฐ๋Š” ๊ธฐ๋ณธ ๋ถ€ํ’ˆ๊ณผ ๊ทธ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์œผ๋กœ ์กฐ๋ฆฝํ•˜์—ฌ ๋งŒ๋“  ์ค‘๊ฐ„ ๋ถ€ํ’ˆ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์€ ๋‹ค๋ฅธ ๋ถ€ํ’ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๋ฆฝ๋  ์ˆ˜ ์—†๋Š” ๋ถ€ํ’ˆ์ด๋‹ค. ์ค‘๊ฐ„ ๋ถ€ํ’ˆ์€ ๋˜ ๋‹ค๋ฅธ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ์ด๋‚˜ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ถ€ํ’ˆ์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž. ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์œผ๋กœ์„œ 1, 2, 3, 4๊ฐ€ ์žˆ๋‹ค. ์ค‘๊ฐ„ ๋ถ€ํ’ˆ 5๋Š” 2๊ฐœ์˜ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ 1๊ณผ 2๊ฐœ์˜ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ 2๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„ ๋ถ€ํ’ˆ 6์€ 2๊ฐœ์˜ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ 5, 3๊ฐœ์˜ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ 3๊ณผ 4๊ฐœ์˜ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ 4๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์žฅ๋‚œ๊ฐ ์™„์ œํ’ˆ 7์€ 2๊ฐœ์˜ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ 5, 3๊ฐœ์˜ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ 6๊ณผ 5๊ฐœ์˜ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ 4๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์žฅ๋‚œ๊ฐ ์™„์ œํ’ˆ 7์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ๊ฐœ์ˆ˜๋Š” 1๋ฒˆ 16๊ฐœ, 2๋ฒˆ 16๊ฐœ, 3๋ฒˆ 9๊ฐœ, 4๋ฒˆ 17๊ฐœ์ด๋‹ค.
์ด์™€ ๊ฐ™์ด ์–ด๋–ค ์žฅ๋‚œ๊ฐ ์™„์ œํ’ˆ๊ณผ ๊ทธ์— ํ•„์š”ํ•œ ๋ถ€ํ’ˆ๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ์„ ๋•Œ ํ•˜๋‚˜์˜ ์žฅ๋‚œ๊ฐ ์™„์ œํ’ˆ์„ ์กฐ๋ฆฝํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ์ข…๋ฅ˜๋ณ„ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ“์ž…๋ ฅ

 ์ฒซ์งธ ์ค„์—๋Š” ์ž์—ฐ์ˆ˜ N(3 ≤ N ≤ 100)์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, 1๋ถ€ํ„ฐ N-1๊นŒ์ง€๋Š” ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์ด๋‚˜ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , N์€ ์™„์ œํ’ˆ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ์ž์—ฐ์ˆ˜ M(3 ≤ M ≤ 100)์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ์–ด๋–ค ๋ถ€ํ’ˆ์„ ์™„์„ฑํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ถ€ํ’ˆ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ 3๊ฐœ์˜ ์ž์—ฐ์ˆ˜ X, Y, K๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด ๋œป์€ "์ค‘๊ฐ„ ๋ถ€ํ’ˆ์ด๋‚˜ ์™„์ œํ’ˆ X๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ ํ˜น์€ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ Y๊ฐ€ K๊ฐœ ํ•„์š”ํ•˜๋‹ค"๋Š” ๋œป์ด๋‹ค. ๋‘ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ์ด ์„œ๋กœ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค.

 

๐Ÿ“‘์ถœ๋ ฅ

 ํ•˜๋‚˜์˜ ์™„์ œํ’ˆ์„ ์กฐ๋ฆฝํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ์ˆ˜๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•˜๋˜(์ค‘๊ฐ„ ๋ถ€ํ’ˆ์€ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ), ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ํฐ ์ˆœ์„œ๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค. ๊ฐ ์ค„์—๋Š” ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ๋ฒˆํ˜ธ์™€ ์†Œ์š” ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
์ •๋‹ต์€ 2,147,483,647 ์ดํ•˜์ด๋‹ค.

 

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

 

์œ„์ƒ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ’ˆ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ์ด๋•Œ 2๋ฒˆ ๋ถ€ํ’ˆ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด 1๋ฒˆ ๋ถ€ํ’ˆ์ด 4๊ฐœ ํ•„์š”ํ•˜๋‹ค๋ฉด ํ˜„์žฌ ํ•„์š”ํ•œ 2๋ฒˆ ๋ถ€ํ’ˆ ๊ฐฏ์ˆ˜ * 1๋ฒˆ ๋ถ€ํ’ˆ์˜ ํ•„์š”๊ฐœ์ˆ˜(4) ๋ฅผ ํ•ด์คŒ์œผ๋กœ์จ ๊ฐ๊ฐ์˜ ๋ถ€ํ’ˆ์˜ ํ•„์š”ํ•œ ๊ฐฏ์ˆ˜๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค

 

๐Ÿ’ป ์ฝ”๋“œ

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
from collections import deque
import sys
input = sys.stdin.readline
 
= int(input())
= int(input())
 
edges = [[] for _ in range(n+1)]
need = [0]*(n+1)
ans = [0]*(n+1)
ans[n] = 1
for _ in range(m):
    x,y,k = map(int,input().split())
    edges[x].append((y,k))
    need[y] += 1
 
 
queue = deque([n])
origin = [i for i in range(1, n+1if not edges[i]]
 
while queue:
    cur = queue.popleft()
    for nxt,cnt in edges[cur]:
        need[nxt] -= 1
        ans[nxt] += cnt*ans[cur]
        if not need[nxt]:
            queue.append(nxt)
 
 
for i in origin:
    print(i, ans[i])
cs

 

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

 

5๊ฐœ์›”๋งŒ์— ๋ฆฌ๋ฒค์ง€ ์„ฑ๊ณตํ•œ ๋ฌธ์ œ๋‹ค.

 

 

๐Ÿ”— ๋ฌธ์ œ๋งํฌ 

noj.am/2637