提出 #32438989


ソースコード 拡げる

def main(N, AB):
    dp = dict()
    def route(a, b, wrongway=None):
        '''aからbまでに通る道の数を返す
        
        wrongwayからaに移動したことを示す。
        '''
        if (a, b, wrongway) in dp:
            return dp[(a, b, wrongway)]
        
        if b in net[a]:
            ret = 1
        else:
            if wrongway is not None:
                available = net[a].copy()
                available.remove(wrongway)
            else:
                available = net[a]
                
            for way in available:
                ret = 1 + route(way, b, a)
                if ret != 0:
                    break
            else:
                ret = -1
        
        dp[(a, b, wrongway)] = ret
        return ret
        
        
    
    # 各都市から見て繋がっている都市のリスト
    net = {i: list() for i in range(1, N+1)}
    
    for a, b in AB:
        net[a].append(b)
        net[b].append(a)
    # print(net)
    # 末端の都市を抽出
    terminals = [k for k, v in net.items() if len(v) == 1]
    
    # 1つの末端から、最大経路の末端を探す
    one_end = None
    w_routes = 0
    for term in terminals[1:]:
        r = route(terminals[0], term)
        if r > w_routes:
            w_routes = r
            one_end = term
        
    # 見つけた末端から最大経路の末端を探す
    terminals.remove(one_end)
    return max([route(one_end, term) for term in terminals]) + 1
 
N = int(input())
AB = [list(map(int, input().split(" "))) for _ in range(N-1)]
print(main(N, AB))

提出情報

提出日時
問題 003 - Longest Circular Road(★4)
ユーザ arakaki_tokyo
言語 PyPy3 (7.3.0)
得点 0
コード長 1652 Byte
結果 RE
実行時間 2223 ms
メモリ 472084 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 4
結果
AC × 4
AC × 11
TLE × 14
RE × 1
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 66 ms 62232 KiB
sample_02.txt AC 52 ms 62220 KiB
sample_03.txt AC 52 ms 62356 KiB
sample_04.txt AC 55 ms 63652 KiB
subtask_1_01.txt AC 70 ms 73980 KiB
subtask_1_02.txt AC 84 ms 74828 KiB
subtask_1_03.txt AC 102 ms 77508 KiB
subtask_1_04.txt TLE 2218 ms 387212 KiB
subtask_1_05.txt TLE 2218 ms 411968 KiB
subtask_1_06.txt TLE 2219 ms 383536 KiB
subtask_1_07.txt AC 218 ms 87000 KiB
subtask_1_08.txt TLE 2221 ms 453768 KiB
subtask_1_09.txt TLE 2223 ms 472084 KiB
subtask_1_10.txt AC 415 ms 133792 KiB
subtask_1_11.txt AC 55 ms 62136 KiB
subtask_1_12.txt TLE 2218 ms 405400 KiB
subtask_1_13.txt TLE 2221 ms 434540 KiB
subtask_1_14.txt AC 61 ms 62060 KiB
subtask_1_15.txt TLE 2221 ms 453232 KiB
subtask_1_16.txt TLE 2216 ms 404976 KiB
subtask_1_17.txt TLE 2219 ms 391940 KiB
subtask_1_18.txt TLE 2218 ms 332600 KiB
subtask_1_19.txt TLE 2220 ms 392816 KiB
subtask_1_20.txt TLE 2220 ms 415132 KiB
subtask_1_21.txt RE 298 ms 113580 KiB
subtask_1_22.txt TLE 2210 ms 145652 KiB