結果
問題 | 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 = 0for j in G[i]:SUM += A[j]D[i] = SUMfor i in range(Q):if query[i][0] == 1:u, v = query[i][1:]u, v = u-1, v-1if 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 = 0for j in G[u]:SUM += A[j]D[u] = SUMif len(G[v]) == route:big.add(v)SUM = 0for j in G[v]:SUM += A[j]D[v] = SUMelif query[i][0] == 2:p, a = query[i][1:]p -= 1pre = A[p]for b in big:if p in G[b]:D[b] -= preD[b] += aA[p] = aelse:c = query[i][1]-1if c in big:print(D[c])else:ans = 0for j in G[c]:ans += A[j]print(ans)