提出 #14907532


ソースコード 拡げる

#!/usr/bin/env python3
"""
Simple Version
Python TLE https://atcoder.jp/contests/dp/submissions/14906600
PyPy TLE https://atcoder.jp/contests/dp/submissions/14906630
"""
from collections import defaultdict
import sys

sys.setrecursionlimit(10**6)


def solve(N, M, edges):
    longest = [-1] * (N + 1)
    for i in range(N + 1):
        if not edges[i]:
            longest[i] = 0

    def get_longest(start):
        ret = longest[start]
        if ret != -1:
            return ret

        next_edges = edges.get(start)
        if not next_edges:
            ret = 0
        else:
            ret = max(get_longest(v) for v in edges[start]) + 1
        longest[start] = ret
        return ret

    return max(get_longest(v) for v in edges)


def main():
    N, M = map(int, input().split())
    edges = defaultdict(set)
    for i in range(M):
        v1, v2 = map(int, input().split())
        edges[v1].add(v2)

    print(solve(N, M, edges))


main()

提出情報

提出日時
問題 G - Longest Path
ユーザ nishiohirokazu
言語 Python (3.8.2)
得点 0
コード長 1000 Byte
結果 TLE
実行時間 2210 ms
メモリ 100784 KiB

ジャッジ結果

セット名 All
得点 / 配点 0 / 100
結果
AC × 21
TLE × 1
セット名 テストケース
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18
ケース名 結果 実行時間 メモリ
0_00 AC 27 ms 9140 KiB
0_01 AC 29 ms 9140 KiB
0_02 AC 27 ms 9296 KiB
1_00 AC 32 ms 9140 KiB
1_01 TLE 2210 ms 100784 KiB
1_02 AC 216 ms 17648 KiB
1_03 AC 408 ms 44156 KiB
1_04 AC 315 ms 30876 KiB
1_05 AC 279 ms 25380 KiB
1_06 AC 261 ms 21428 KiB
1_07 AC 246 ms 21196 KiB
1_08 AC 230 ms 18084 KiB
1_09 AC 233 ms 19120 KiB
1_10 AC 219 ms 16212 KiB
1_11 AC 275 ms 23224 KiB
1_12 AC 560 ms 46404 KiB
1_13 AC 530 ms 35900 KiB
1_14 AC 292 ms 25560 KiB
1_15 AC 270 ms 22420 KiB
1_16 AC 419 ms 34200 KiB
1_17 AC 735 ms 48960 KiB
1_18 AC 330 ms 29784 KiB