結果
| 問題 |
No.2563 色ごとのグループ
|
| コンテスト | |
| ユーザー |
AngrySadEight
|
| 提出日時 | 2023-11-24 01:36:48 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 484 ms / 2,000 ms |
| コード長 | 862 bytes |
| コンパイル時間 | 537 ms |
| コンパイル使用メモリ | 82,412 KB |
| 実行使用メモリ | 108,416 KB |
| 最終ジャッジ日時 | 2024-09-26 16:34:46 |
| 合計ジャッジ時間 | 7,492 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 35 |
ソースコード
from collections import deque
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
C = list(map(int, input().split()))
graph = [[] for _ in range(N)]
for i in range(M):
u, v = map(int, input().split())
u -= 1
v -= 1
if C[u] == C[v]:
graph[u].append(v)
graph[v].append(u)
ans = 0
Clen = [0 for _ in range(N + 1)]
for i in range(N):
Clen[C[i]] += 1
isvisited = [False for _ in range(N)]
dq = deque()
for i in range(N):
if isvisited[i]:
continue
isvisited[i] = True
dq.append(i)
while len(dq):
Clen[C[i]] -= 1
p = dq.popleft()
for x in graph[p]:
if isvisited[x]:
continue
isvisited[x] = True
dq.append(x)
Clen[C[i]] += 1
# print(Clen)
for i in range(1, N + 1):
ans += max(0, Clen[i] - 1)
print(ans)
AngrySadEight