結果
問題 |
No.3025 Chocol∀te
|
ユーザー |
![]() |
提出日時 | 2025-02-16 17:40:36 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,695 ms / 2,000 ms |
コード長 | 1,850 bytes |
コンパイル時間 | 414 ms |
コンパイル使用メモリ | 82,520 KB |
実行使用メモリ | 137,312 KB |
最終ジャッジ日時 | 2025-02-16 17:41:30 |
合計ジャッジ時間 | 44,933 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 77 |
ソースコード
N, M = map(int, input().split()) G = [set() for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) G[u-1].add(v-1) G[v-1].add(u-1) A = list(map(int, input().split())) Q = int(input()) query = [list(map(int, input().split())) for _ in range(Q)] route = int((10**5)**0.5) big = set() D = dict() for i in range(N): if route <= len(G[i]): big.add(i) SUM = 0 for j in G[i]: SUM += A[j] D[i] = SUM for i in range(Q): if query[i][0] == 1: u, v = query[i][1:] u, v = u-1, v-1 if v in G[u]: G[u].remove(v) G[v].remove(u) if route <= len(G[u]): D[u] -= A[v] if route <= len(G[v]): D[v] -= A[u] if len(G[u])+1 == route: big.remove(u) if len(G[v])+1 == route: big.remove(v) else: G[u].add(v) G[v].add(u) if route+1 <= len(G[u]): D[u] += A[v] if route+1 <= len(G[v]): D[v] += A[u] if len(G[u]) == route: big.add(u) SUM = 0 for j in G[u]: SUM += A[j] D[u] = SUM if len(G[v]) == route: big.add(v) SUM = 0 for j in G[v]: SUM += A[j] D[v] = SUM elif query[i][0] == 2: p, a = query[i][1:] p -= 1 pre = A[p] for b in big: if p in G[b]: D[b] -= pre D[b] += a A[p] = a else: c = query[i][1]-1 if c in big: print(D[c]) else: ans = 0 for j in G[c]: ans += A[j] print(ans)