結果
問題 |
No.2200 Weird Shortest Path
|
ユーザー |
|
提出日時 | 2025-03-18 08:15:00 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 874 ms / 2,000 ms |
コード長 | 620 bytes |
コンパイル時間 | 518 ms |
コンパイル使用メモリ | 82,828 KB |
実行使用メモリ | 113,076 KB |
最終ジャッジ日時 | 2025-03-18 08:15:28 |
合計ジャッジ時間 | 24,654 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 44 |
ソースコード
N,M = map(int,input().split()) A = sorted([list(map(int,input().split())) for _ in range(M)],key=lambda x:x[2]) T = [0]+[[i,1] for i in range(1,N+1)] def find(x): if T[x][0]==x: return x return find(T[x][0]) def union(x,y): rx = find(x) ry = find(y) if rx==ry: return if T[rx][1]>=T[ry][1]: T[ry][0] = rx T[rx][1] += T[ry][1] elif T[rx][1]<T[ry][1]: T[rx][0] = ry T[ry][1] += T[rx][1] ans = 0 for i in range(M): a,b,w = A[i] ra = find(a) rb = find(b) if ra==rb:continue ans += w*T[ra][1]*T[rb][1] union(ra,rb) print(ans)