Python为啥不过???
查看原帖
Python为啥不过???
1776323
TomAnderson_楼主2025/6/15 20:11
import sys
from collections import deque

def solve():
    input = sys.stdin.read().split()
    ptr = 0
    n, m = int(input[ptr]), int(input[ptr+1])
    ptr += 2
    A = list(map(int, input[ptr:ptr+n]))
    ptr += n
    
    adj = [[] for _ in range(n+1)]
    in_degree = [0] * (n + 1)
    
    for _ in range(m):
        u, v = int(input[ptr]), int(input[ptr+1])
        ptr += 2
        adj[u].append(v)
        in_degree[v] += 1
    
    dp = [1] * (n + 1)
    max_dp = [0] * 11  # A[i] ranges from 1 to 10
    
    q = deque()
    for i in range(1, n + 1):
        if in_degree[i] == 0:
            q.append(i)
    
    top_order = []
    while q:
        u = q.popleft()
        top_order.append(u)
        for v in adj[u]:
            in_degree[v] -= 1
            if in_degree[v] == 0:
                q.append(v)
    
    for u in top_order:
        current_a = A[u - 1]
        max_prev = 0
        for a in range(1, current_a + 1):
            if max_dp[a] > max_prev:
                max_prev = max_dp[a]
        if max_prev + 1 > dp[u]:
            dp[u] = max_prev + 1
        if dp[u] > max_dp[current_a]:
            max_dp[current_a] = dp[u]
    
    print(max(dp))

solve()#本人水印//
2025/6/15 20:11
加载中...