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を答えとして出力すればよい感じ? */