์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ทธ๋ž˜ํ”„

[๋ฐฑ์ค€ 15681 ๐Ÿฅ‡] ํŠธ๋ฆฌ์™€ ์ฟผ๋ฆฌ

1eehyunji 2023. 7. 16. 01:46

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

 

15681๋ฒˆ: ํŠธ๋ฆฌ์™€ ์ฟผ๋ฆฌ

ํŠธ๋ฆฌ์˜ ์ •์ ์˜ ์ˆ˜ N๊ณผ ๋ฃจํŠธ์˜ ๋ฒˆํ˜ธ R, ์ฟผ๋ฆฌ์˜ ์ˆ˜ Q๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) ์ด์–ด N-1์ค„์— ๊ฑธ์ณ, U V์˜ ํ˜•ํƒœ๋กœ ํŠธ๋ฆฌ์— ์†ํ•œ ๊ฐ„์„ ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ U, V ≤ N, U ≠ V)

www.acmicpc.net

๋ฌธ์ œ

๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜์™€ ๋ฐฉํ–ฅ์„ฑ์ด ์—†๋Š” ์ž„์˜์˜ ๋ฃจํŠธ ์žˆ๋Š” ํŠธ๋ฆฌ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜์˜ ์ฟผ๋ฆฌ์— ๋‹ตํ•ด๋ณด๋„๋ก ํ•˜์ž.

  • ์ •์  U๋ฅผ ๋ฃจํŠธ๋กœ ํ•˜๋Š” ์„œ๋ธŒํŠธ๋ฆฌ์— ์†ํ•œ ์ •์ ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋งŒ์•ฝ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ์— ์–ด๋ ค์›€์ด ์žˆ๋‹ค๋ฉด, ํ•˜๋‹จ์˜ ํžŒํŠธ์— ์ฒจ๋ถ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

์ž…๋ ฅ

ํŠธ๋ฆฌ์˜ ์ •์ ์˜ ์ˆ˜ N๊ณผ ๋ฃจํŠธ์˜ ๋ฒˆํ˜ธ R, ์ฟผ๋ฆฌ์˜ ์ˆ˜ Q๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105)

์ด์–ด N-1์ค„์— ๊ฑธ์ณ, U V์˜ ํ˜•ํƒœ๋กœ ํŠธ๋ฆฌ์— ์†ํ•œ ๊ฐ„์„ ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ U, V ≤ N, U ≠ V)

์ด๋Š” U์™€ V๋ฅผ ์–‘ ๋์ ์œผ๋กœ ํ•˜๋Š” ๊ฐ„์„ ์ด ํŠธ๋ฆฌ์— ์†ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด์–ด Q์ค„์— ๊ฑธ์ณ, ๋ฌธ์ œ์— ์„ค๋ช…ํ•œ U๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ U ≤ N)

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ํŠธ๋ฆฌ๋Š” ํ•ญ์ƒ ์˜ฌ๋ฐ”๋ฅธ ํŠธ๋ฆฌ์ž„์ด ๋ณด์žฅ๋œ๋‹ค.

์ถœ๋ ฅ

Q์ค„์— ๊ฑธ์ณ ๊ฐ ์ฟผ๋ฆฌ์˜ ๋‹ต์„ ์ •์ˆ˜ ํ•˜๋‚˜๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋ฌธ์ œํ’€์ด

import sys
sys.setrecursionlimit(100000)

n,r,q=map(int, sys.stdin.readline().split(' '))
graph=[[] for _ in range(n+1)]
for _ in range(n-1):
    a,b=map(int, sys.stdin.readline().split(' '))
    graph[a].append(b)
    graph[b].append(a)

visited=[0]*(n+1)
def dfs(v):
    visited[v]+=1
    for node in graph[v]:
        if visited[node]==0:
            visited[v]+=dfs(node)
    return visited[v]

dfs(r)

for _ in range(q):
    root=int(sys.stdin.readline())
    print(visited[root])

์˜ค๋žœ๋งŒ์— DFS๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ œํ’€์ด์˜€๋‹ค.

dfs ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์žฌ๊ท€ ํ•จ์ˆ˜๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•ด์„œ ์—ฐ๊ฒฐ๋œ ์ž์‹์˜ ์ˆ˜๋ฅผ visited ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. 

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ชจ๋‘ ๋งˆ์น˜๊ณ  ๋‚˜๋ฉด, visited ๋ฐฐ์—ด์— ๊ฐ ๋…ธ๋“œ๋ณ„๋กœ ์ž์‹ ์„ ํฌํ•จํ•œ ์ž์‹์˜ ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.