1704E - Count Seconds - CodeForces Solution


brute force constructive algorithms dp graphs

Please click on ads to support us..

Python Code:

from functools import lru_cache
import sys
import io
import os


MOD = 998244353  
sys.setrecursionlimit(5000)

def main():
    for _ in range(read_int()):
        n, m = read_int_tuple()
        a = read_int_list()
        rg = [[] for _ in range(n)]
        ss = set(range(n))

        for _ in range(m):
            u, v = read_int_tuple()
            rg[v - 1].append(u - 1)
            ss.discard(u - 1)
        
        @lru_cache(None)
        def dfs(u):
            r = a[u]
            s, e = 1, a[u]
            book = []
            for v in rg[u]:
                last, end = dfs(v)
                if last == 0:
                    continue
                book.append((end - last + 2, end + 1))
            book.sort()
            
            for vs, ve in book:
                if vs > e:
                    s, e = ve - (ve - vs + 1 + e - s + 1) + 1, ve
                else:
                    e += ve - vs + 1
            return e - s + 1, e
            
            
        print(dfs(ss.pop())[1] % MOD)
        
        
        

def input(): return sys.stdin.readline().rstrip('\r\n')


def read_int_list():
    return list(map(int, input().split()))


def read_int_tuple():
    return tuple(map(int, input().split()))


def read_int():
    return int(input())



if __name__ == "__main__":
    main()


Comments

Submit
0 Comments
More Questions

866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary
368. Largest Divisible Subset
377. Combination Sum IV
322. Coin Change
307. Range Sum Query - Mutable
287. Find the Duplicate Number
279. Perfect Squares