トピックポータル
問題解決のアイデア:
クラスカルを実行し、tと中国聯通、最大出力までよ
ACコード:
1の#include <cstdioを> 2の#include <iostreamの> 3の#include <アルゴリズム> 4 5 使用 名前空間STD。 6 7 INTの N、M、S、T、FA [ 10001 ]、ANS。 8 構造体KKK { 9 INT から、へ、V。 10 } E [ 20001 ]。 11 12 ブールCMP(KKK BをKKK){ 13 リターン AV < BV。 14 } 15 16 INT find_father(INT X){ 17 もし(FA [X] == x)をリターンX。 18 リターン FA [X] = find_father(FA [X])。 19 } 20 21 のint main()の 22 { 23 のscanf(" %D%D%D%D "、&N、&M、&S&T)。 24 のために(int型 i = 1 ; iが<= N; iが++ ) 25 のFA [I] = I。 26 のためには、(int型 I = 1 ; I <= M iは++ ) 27 のscanf(" %D%D%D "、&E [i]とします。&E [i]の.TO、&E [I] .V)。 28 ソート(E + 1、E + 1、M + 1 、CMP)。 29 のために(int型 I = 1 ; I <= M Iは++ ){ 30 INT X1 = find_father(E [I] から)。 31 INT Y1 = find_father(E [I] .TO)。 32 であれば(X1 =!Y1){ 33 、FA [X1] = Y1。 34の ANS = MAX(ANS、E [I] .V)。 35 } 36 であれば(find_father(S)== find_father(T)){ 37 printf(" %dの" 、ANS)。 38 リターン 0 ; 39 } 40 } 41 リターン 0 。 42 }