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

View File

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