結果

問題 No.3426 Mod K Graph Increments (Hard)
コンテスト
ユーザー kidodesu
提出日時 2025-12-28 19:08:19
言語 PyPy3
(7.3.17)
結果
AC  
実行時間 494 ms / 2,000 ms
コード長 1,011 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 179 ms
コンパイル使用メモリ 82,320 KB
実行使用メモリ 143,924 KB
最終ジャッジ日時 2026-01-11 13:04:02
合計ジャッジ時間 3,037 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 10
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

sum_n = sum_m = 0
for _ in range(int(input())):
    n, m, k = map(int, input().split()); assert 1 <= n <= 2*10**5 and 0 <= m <= min(n*(n-1)//2, 2*10**5) and 1 <= k <= 10**9
    sum_n += n
    sum_m += m
    node = [[] for _ in range(n)]
    for _ in range(m):
        u, v = [int(x)-1 for x in input().split()]; assert 0 <= min(u, v) and max(u, v) < n
        node[u].append(v)
        node[v].append(u)
    B = list(map(int, input().split()))
    for i in range(n): assert 0 <= B[i] < k
    D = [-1] * n
    D[0] = 0
    S = [0]
    f = 1
    while S:
        now = S.pop()
        for nxt in node[now]:
            if D[nxt] == -1:
                D[nxt] = D[now]^1
                S.append(nxt)
            elif D[now] == D[nxt]:
                f = 0
    if not k % 2 and sum(B) % 2:
        print("No")
    elif f and sum([B[i] for i in range(n) if D[i]]) % k != sum([B[i] for i in range(n) if not D[i]]) % k:
        print("No")
    else:
        print("Yes")

assert sum_n <= 2*10**5 and sum_m <= 2*10**5
0