提出 #6860023


ソースコード 拡げる

from collections import deque
import sys
sys.setrecursionlimit(10**5)

N, M = map(int, input().split())
E = []
for i in range(M):
    a, b, c = map(int, input().split())
    E.append((c, a-1, b-1))
E.sort()

*p, = range(N)
def root(x):
    if x == p[x]:
        return x
    p[x] = y = root(p[x])
    return y

L = 2*N-1
G = [[]] * L
C = [0]*L
*lb, = range(N)
cur = N

s = 0
for c, a, b in E:
    pa = root(a); pb = root(b)
    if pa == pb:
        continue
    s += c
    chds = [lb[pa], lb[pb]]
    if pa < pb:
        p[pb] = pa
        lb[pa] = cur
    else:
        p[pa] = pb
        lb[pb] = cur
    C[cur] = c
    G[cur] = chds
    cur += 1

H = [0]*L
prv = [-1]*L
def dfs(v):
    s = 1; heavy = -1; m = 0
    for w in G[v]:
        prv[w] = v
        c = dfs(w)
        if m < c:
            heavy = w
            m = c
        s += c
    H[v] = heavy
    return s
dfs(L-1)

SS = []
D = []
LB = [0]*L
I = [0]*L
que = deque([(L-1, 0)])
while que:
    v, d = que.popleft()
    S = []
    k = len(SS)
    while v != -1:
        I[v] = len(S)
        S.append(v)
        LB[v] = k
        h = H[v]
        for w in G[v]:
            if h == w:
                continue
            que.append((w, d+1))
        v = h
    SS.append(S)
    D.append(d)


def query(u, v):
    lu = LB[u]; lv = LB[v]
    dd = D[lv] - D[lu]
    if dd < 0:
        lu, lv = lv, lu
        v, u = u, v
        dd = -dd

    for _ in range(dd):
        v = prv[SS[lv][0]]
        lv = LB[v]

    while lu != lv:
        u = prv[SS[lu][0]]
        lu = LB[u]

        v = prv[SS[lv][0]]
        lv = LB[v]

    return u if I[u] < I[v] else v


def gen():
    Q = int(input())
    for i in range(Q):
        u, v = map(int, input().split())
        w = query(u-1, v-1)
        yield "%d\n" % (s - C[w])
ans = list(gen())
sys.stdout.writelines(ans)

提出情報

提出日時
問題 A - グラフ
ユーザ yaketake08
言語 Python (3.4.3)
得点 700
コード長 1932 Byte
結果 AC
実行時間 2965 ms
メモリ 82352 KiB

ジャッジ結果

セット名 Sample subtask1 subtask2 All
得点 / 配点 0 / 0 200 / 200 300 / 300 200 / 200
結果
AC × 2
AC × 12
AC × 21
AC × 31
セット名 テストケース
Sample sample_1.txt, sample_2.txt
subtask1 sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt
All sample_1.txt, sample_2.txt, sample_1.txt, sample_2.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt
ケース名 結果 実行時間 メモリ
sample_1.txt AC 21 ms 3316 KiB
sample_2.txt AC 21 ms 3316 KiB
subtask_1_1.txt AC 26 ms 3444 KiB
subtask_1_10.txt AC 1161 ms 39996 KiB
subtask_1_11.txt AC 21 ms 3316 KiB
subtask_1_2.txt AC 250 ms 12628 KiB
subtask_1_3.txt AC 2383 ms 74056 KiB
subtask_1_4.txt AC 57 ms 6132 KiB
subtask_1_5.txt AC 63 ms 6496 KiB
subtask_1_6.txt AC 558 ms 22808 KiB
subtask_1_7.txt AC 2438 ms 73964 KiB
subtask_1_8.txt AC 59 ms 6124 KiB
subtask_1_9.txt AC 91 ms 7408 KiB
subtask_2_1.txt AC 2432 ms 74176 KiB
subtask_2_2.txt AC 2391 ms 74204 KiB
subtask_2_3.txt AC 2458 ms 74288 KiB
subtask_2_4.txt AC 2344 ms 74300 KiB
subtask_2_5.txt AC 76 ms 6568 KiB
subtask_2_6.txt AC 150 ms 9504 KiB
subtask_2_7.txt AC 565 ms 23068 KiB
subtask_2_8.txt AC 2401 ms 74344 KiB
subtask_3_1.txt AC 2962 ms 82324 KiB
subtask_3_2.txt AC 2965 ms 82220 KiB
subtask_3_3.txt AC 650 ms 14696 KiB
subtask_3_4.txt AC 659 ms 16088 KiB
subtask_3_5.txt AC 1813 ms 48212 KiB
subtask_3_6.txt AC 2361 ms 65280 KiB
subtask_3_7.txt AC 2937 ms 82276 KiB
subtask_3_8.txt AC 2912 ms 82352 KiB