結果

問題 No.235 めぐるはめぐる (5)
ユーザー しらっ亭しらっ亭
提出日時 2015-07-16 01:49:45
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
TLE  
実行時間 -
コード長 1,163 bytes
コンパイル時間 73 ms
コンパイル使用メモリ 11,072 KB
実行使用メモリ 110,224 KB
最終ジャッジ日時 2023-09-22 16:37:47
合計ジャッジ時間 23,634 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve(N, S, C, MAP, Q, Y):
    def route(f, t):
        v = [0] * (N + 1)

        stack = [f]
        while stack:
            i = stack.pop()
            for j in MAP[i]:
                if not v[j]:
                    v[j] = i
                    if j == t:
                        break
                    stack.append(j)
        r = []
        while t != f:
            r.append(t)
            t = v[t]
        r.append(f)
        return r

    for y in Y:
        f = y[1]
        t = y[2]
        r = route(f, t)

        if y[0] == 1:
            print(sum(S[i - 1] for i in r))
        elif y[0] == 0:
            z = y[3]
            for i in r:
                S[i - 1] += C[i - 1] * z


def main():
    N = int(input())
    S = list(map(int, input().split()))
    C = list(map(int, input().split()))

    MAP = [[] for f in range(N + 1)]

    for i in range(N - 1):
        a, b = list(map(int, input().split()))
        MAP[a].append(b)
        MAP[b].append(a)

    Q = int(input())
    Y = [None] * Q
    for i in range(Q):
        Y[i] = list(map(int, input().split()))

    solve(N, S, C, MAP, Q, Y)


if __name__ == '__main__':
    main()
0