baekjoon 20260320

This commit is contained in:
songyc macbook 2026-03-20 22:40:39 +09:00
parent 531652b9d4
commit 96c620e88e
3 changed files with 43 additions and 37 deletions

View File

@ -2,28 +2,31 @@ import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
ans = []
for _ in range(int(input())) :
N, K = map(int, input().split())
bt = [0] + list(map(int, input().split()))
build_time = [0] + list(map(int, input().split()))
build_info = [[] for _ in range(N+1)]
prev_build = [[] for _ in range(N+1)]
for _ in range(K) :
x, y = map(int, input().split())
build_info[y].append(x)
W = int(input())
prev_build[y].append(x)
W = int(input())
dp = [-1]*(N+1)
def solve(target) :
if dp[target] == -1 :
max_build_time = 0
for prev in build_info[target] :
max_build_time = max(max_build_time, solve(prev))
def build(n) :
if dp[n] == -1 :
prev_time = 0
for prev in prev_build[n] :
prev_time = max(prev_time, build(prev))
dp[n] = prev_time + bt[n]
dp[target] = max_build_time + build_time[target]
return dp[target]
return dp[n]
print(solve(W))
ans.append(build(W))
print("\n".join(map(str, ans)))

View File

@ -2,43 +2,45 @@ from collections import deque
import sys
input = sys.stdin.readline
ans = []
T = int(input())
for _ in range(T) :
def solve() :
N, K = map(int, input().split())
build_info = [[] for _ in range(N+1)]
dp = [-1]*(N+1)
build_time = [0] + list(map(int, input().split()))
graph = [[] for _ in range(N+1)]
indegree = [0]*(N+1)
for _ in range(K) :
u, v = map(int, input().split())
build_info[u].append(v)
indegree[v] += 1
W = int(input())
x, y = map(int, input().split())
graph[x].append(y)
indegree[y] += 1
qu = deque()
dp = [0]*(N+1)
for i in range(1, N+1) :
if indegree[i] == 0 :
qu.append(i)
dp[i] = build_time[i]
W = int(input())
while qu :
now = qu.popleft()
if now == W :
break
for next in build_info[now] :
dp[next] = max(dp[next], dp[now] + build_time[next])
for nxt in graph[now] :
dp[nxt] = max(dp[nxt], dp[now] + build_time[nxt])
indegree[next] -= 1
if indegree[next] == 0 :
qu.append(next)
ans.append(str(dp[W]))
indegree[nxt] -= 1
if indegree[nxt] == 0 :
qu.append(nxt)
return dp[W]
print('\n'.join(ans))
ans = []
for _ in range(int(input())) :
ans.append(solve())
print("\n".join(map(str, ans)))

View File

@ -0,0 +1 @@
print("".join(s[0] for s in input().split("-")))