結果
| 問題 | No.1639 最小通信路 |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-05-11 13:58:48 |
| 言語 | Go (1.26.1) |
| 結果 |
AC
|
| 実行時間 | 237 ms / 2,000 ms |
| コード長 | 1,146 bytes |
| 記録 | |
| コンパイル時間 | 12,157 ms |
| コンパイル使用メモリ | 283,352 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-05-11 13:59:03 |
| 合計ジャッジ時間 | 14,457 ms |
|
ジャッジサーバーID (参考情報) |
judge2_1 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 43 |
ソースコード
package main
import . "fmt"
func main() {
var n int
Scan(&n)
group := make([]int, n)
count := make([]int, n+1)
newg := 1
for i := 0; i < n*(n-1)/2; i++ {
var a,b int
var c string
Scan(&a,&b,&c)
a--
b--
ga := group[a]
gb := group[b]
if ga > gb {
ga,gb = gb,ga
a,b = b,a
}
switch {
case ga == 0 && gb == 0:
group[a] = newg
group[b] = newg
count[newg] = 2
if count[newg] == n {
Println(c)
return
}
newg++
case ga == 0:
group[a] = gb
count[gb]++
if count[gb] == n {
Println(c)
return
}
case gb == 0:
group[b] = ga
count[ga]++
if count[ga] == n {
Println(c)
return
}
case ga < gb:
count[ga] += count[gb]
count[gb] = 0
for i, x := range group {
if x == gb {
group[i] = ga
}
}
if count[ga] == n {
Println(c)
return
}
}
}
}
/*
考察
最小全域木の構築?
辺の距離=コストが昇順入力だから
クラスカル法をそのまま使えってことぽい?
全域木を達成した時点でのCiを答えとして出力すればよい感じ?
*/
ID 21712