baekjoon 20260320
This commit is contained in:
parent
531652b9d4
commit
96c620e88e
@ -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)))
|
||||
@ -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)))
|
||||
1
code_study/Baekjoon/python/2902.py
Normal file
1
code_study/Baekjoon/python/2902.py
Normal file
@ -0,0 +1 @@
|
||||
print("".join(s[0] for s in input().split("-")))
|
||||
Loading…
x
Reference in New Issue
Block a user