[BOJ][๐ก4][๋ฐฑ์ค#24955] ์ซ์ ์ด์ด ๋ถ์ด๊ธฐ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold IV
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ฒ ์๋ ์๋ฅผ ์ด์ด ๋ถ์ด๋ ๋์ด๋ฅผย ์ข์ํ๋ค. 1๊ณผ 2๋ฅผ ์ด์ด ๋ถ์ด๋ฉด 12๊ฐ ๋๊ณ , 17๊ณผ 13์ ์ด์ด ๋ถ์ด๋ฉด 1713์ด ๋๋ค. 100๊ณผ 1000์ ์ด์ด ๋ถ์ด๋ฉด 1001000์ด ๋๋ค. 1๊ณผ 2๋ฅผ ์ด์ด ๋ถ์ด๋, ์์๋ฅผ ๋ฐ๋๋ก ํด์ 2์ 1์ ์ด์ด ๋ถ์ด๋ฉด, 21์ด ๋๋ค. ๊ฐ์ ๋ ์๋ฅผ ์ด์ด ๋ถ์ด๋๋ผ๋, ์ด์ด ๋ถ์ด๋ ์์์ ๋ฐ๋ผ์ ๊ฐ์ด ๋ฌ๋ผ์ง๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ฒ ์๊ฐ ์ด๊ณ ์๋ ๋ง์์๋ย ์ง์ด ์ฌ๋ฌ ์ฑ ์๊ณ , ๊ฐ ์ง์๋ $1$๋ถํฐ $N$๊น์ง ๋ฒํธ๊ฐ ๋ถ์ด์๋ค. ๋ ์ง ์ฌ์ด์ ์กด์ฌํ๋ ๋๋ก๋ฅผ ํตํด ์๋ก ์ด๋ํ ์ ์๋ค. ์ด $N-1$๊ฐ์ ๋๋ก๊ฐ ์กด์ฌํ๋ค. $i$๋ฒ์งธ ๋๋ก๋ $a_i$๋ฒ ์ง๊ณผ $b_i$์ง์ ์๋๋ค.ย ์ง๊ณผ ๋๋ก๋ ํธ๋ฆฌ์ ํํ๋ฅผ ์ด๋ฃฌ๋ค. ์ฆ, ์ด๋ค ์ง์์ ์์ํด์ ๋ช ๊ฐ์ ๋๋ก๋ฅผ ๊ฑฐ์ณ ์ด๋ค ์ง์ด๋ผ๋ ๊ฐ ์ ์๊ณ , ๊ฐ์ ์ง์ ๋ ๋ฒ ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒฝ์ฐ ๊ทธ ๊ฒฝ๋ก๋ ์ ์ผํ๋ค. ๊ฐ๊ฐ์ ์ง์ ๋๋ฌธ์๋ ์๊ฐ ์ฐ์ฌ์๋ค. ์ฒ ์๋ ์ด $Q$๋ฒ ์๋ฅผ ์ด์ด ๋ถ์ด๋ ๋์ด๋ฅผ ํ ๊ฒ์ด๋ค. $i$๋ฒ์งธ ๋์ด์์๋ $x_i$๋ฒ์งธ ์ง์์ ์์ํด์, $y_i$๋ฒ์งธ ์ง๊น์ง ์ด๋ํ๋ฉด์, ์ด๋ํ๋ ๊ฒฝ๋ก ์์ ์๋ ์ง๋ค์ ๋๋ฌธ์ ์ฐ์ฌ์๋ย ์๋ค์ ๋ฐฉ๋ฌธํ๋ ์์๋๋ก ์ด์ด ๋ถ์ผ ๊ฒ์ด๋ค. ๋ง์ฝ $x_i = y_i$๋ผ๋ฉด, $x_i$๋ฒ์งธ ์ง์ ๋๋ฌธ์ ์ฐ์ธ ์๊ฐ ๋ต์ด ๋ ๊ฒ์ด๋ค. ์ฒ ์๋ ๋์ด๊ฐ ๋๋ ๋๋ง๋ค, ์๊ธฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ค์ ์ด์ด ๋ถ์๋์ง ๊ถ๊ธํด์ก๋ค. ์ฒ ์๋ฅผ ์ํด, $i$๋ฒ์งธ ๋์ด๊ฐ ๋๋ฌ์ ๋ ์ด์ด ๋ถ์ธ ์์ ๊ฐ์ ๊ตฌํด์ฃผ์. ๋จ, ์๊ฐ ๋๋ฌด ์ปค์ง ์ ์์ผ๋๊น, $1\,000\,000\,007$๋กย ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ง์ ๊ฐ์ $N$๊ณผ, ์ฒ ์๊ฐ ๋์ด๋ฅผ ํ ํ์ $Q$๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค์๋ $N$๊ฐ์ ์ง์ ๋๋ฌธ์ย ์ฐ์ฌ ์๋ ์ $A_i$๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ธ ๋ฒ์งธ ์ค๋ถํฐ $N+1$๋ฒ์งธ ์ค๊น์ง๋, ๋๋ก์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. $2+i$๋ฒ์งธ ์ค์๋ $i$๋ฒ์งธ ๋๋ก๊ฐ ์๋ ๋ ์ง์ ๋ฒํธ $a_i, b_i$์ ๋ํ ์ ๋ณด๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. $N+2$๋ฒ์งธ ์ค๋ถํฐ $N+Q+1$๋ฒ์งธ ์ค๊น์ง๋ ๋์ด์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. $N+i+1$๋ฒ์งธ ์ค์๋ $i$๋ฒ์งธ ๋์ด๋ฅผ ์์ํ ์ง์ ๋ฒํธ $x_i$์, ๋๋ผ ์ง์ ๋ฒํธ $y_i$๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค๋ถํฐ $Q$๋ฒ์งธ ์ค์ ๊ฑธ์ณ, $i$๋ฒ์งธ ์ค์๋ $i$๋ฒ์งธ ๋์ด์ ๊ฒฐ๊ณผ๋ฅผย $1\,000\,000\,007$๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์ ํ
$2\leq N \leq 1\,000$ $1\leq Q \leq 1\,000$ $1 \leq A_i \leq 1\,000\,000\,000$ ($1 \leq i \leq N$) $1 \leq a_i, b_i \leq N$ $1 \leq x_i, y_i \leq N$
์์
์ ๋ ฅ
3 2
10 9 1
1 2
2 3
1 3
3 1
์ถ๋ ฅ
1091
1910
My Sol
import sys
input = sys.stdin.readline
from collections import deque
def pathcheck(s, e):
visit = [0]*(V+1)
Q = deque()
Q.append((s, [s]))
while Q:
u, path = Q.popleft()
if u == e: return path
if visit[u]: continue
visit[u] = 1
for v in G[u]:
if visit[v]: continue
Q.append((v, path+[v]))
V, Q = map(int, input().split())
doors = ['0'] + list(input().split())
G = [[] for _ in range(V+1)]
for _ in range(V-1):
u, v = map(int, input().split())
G[u].append(v)
G[v].append(u)
for _ in range(Q):
s, e = map(int, input().split())
path = pathcheck(s, e)
txt = ''
for p in path:
txt += doors[p]
txt = str(int(txt) % 1000000007)
print(txt)
BFS๋ฅผ ์ด์ฉํด ๋์ฐฉ๋ ธ๋๊น์ง ๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ํ์ ํ๊ณ , ์ด ๊ฐ๊ฐ์ ๋ ธ๋์ ํด๋นํ๋ ์ ๋ฌธ์์ด์ ์ด์ด๋ถ์ธ ๋ค, ์ซ์ ๋ณํํ์ฌ 1000000007๋ก ๋๋ ๋๋จธ์ง๋ฅผ txt๋ก ์ฌ์ง์ ํ๋ค. ์ด๋ฅผ path๊ฐ ๋๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค. ๋ง์ฝ ๋งค๋ฒ ์ด ๋๋๋ ๊ณผ์ ์ ํ์ง ์๋๋ค๋ฉด ์๊ฐ ๋๋ฌด ์ปค์ ธ์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
๋งค๋ฒ ๋๋์ด ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ๋ค์ ์ค๋ ์ ๋ฌธ์์ด์ด 123์ด๋ผ๊ณ ํ ๋ ์ด์ txt์ ๊ฐ์ด X๋ณด๋ค ํฐ (X+A)๋ผ๊ณ ํด๋ณด์. ๊ทธ๋ ๋ค๋ฉด (X+A)123์ (X*123) + (A*123)์ด๊ณ , X๋ฅผ X๋ก ๋๋๋ฉด ๋๋จธ์ง๋ 0์ด๋ฏ๋ก A*123์ด ๋๋ ๊ฒ์ด๋ค. ๋ค์ ๋งํ๋ฉด ๋ ์์ ๋ฌธ์์ด์ ๋ถ์ธ ์ด๋ค ๊ฐ Y๊ฐ X๋ณด๋ค ํฌ๋ค๋ฉด, X๋ฅผ ๋๋ ๋๋จธ์ง๋ง ๋จ๊ฒจ๋ ๋๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋ชจ๋ฒ๋ต์
import sys
from collections import deque
N, Q = map(int, input().split())
num = [""] + input().split()
graph = [[] for _ in range(N + 1)]
for _ in range(N - 1):
a, b = map(int, next(sys.stdin).split())
graph[a].append(b)
graph[b].append(a)
mod = 1_000_000_007
for line in sys.stdin:
x, y = map(int, line.split())
v = [False] * (N + 1)
v[x] = True
queue = deque([(x, num[x])])
while queue:
c, n = queue.popleft()
if c == y:
print(int(n) % mod)
break
for adj in graph[c]:
if not v[adj]:
v[adj] = True
queue.append((adj, n + num[adj]))
์ฐ์ฐ์๊ฐ์ด 30%๊ฐ๋ ๋๋ ํ์ด๋ฅผ ๋ฐ๊ฒฌํด ํ์ด๋ฅผ ๋ถ์ํด๋ณด๋ ค ํ๋ค. ๊ฒฐ์ ์ ์ผ๋ก ๋ค๋ฅธ ๋ถ๋ถ์, ๋๋ ๊ฒฝ๋ก๋ฅผ ๋งค๋ฒ deque์ ๋ฃ์ด์ฃผ๋ฉฐ ๊ฒฝ๋ก๋ฅผ ํ์ ํ ๋ค, ํ๋ํ๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ฉฐ ์๋ฅผ ๋ถ์ฌ์ฃผ์๋๋ฐ, ์ด ๋ถ์ ๊ฒฝ๋ก ๋์ ๋๋จธ์ง๋ฅผ ์์ฒด๋ฅผ ๊ตฌํด์ ๋ถ์ฌ๊ฐ๋ฉฐ deque์ ๋ฃ์ด์ฃผ์๋ค๋ ๊ฒ์ด๋ค. ์ด ์์ ํ ๊ฐ์ง๊ฐ ์ฐ์ฐ ์๋์ ๊ทธ๋ ๊ฒ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋๋ผ์ ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ