남해 1342 [2009] 주니어 cowtract (네트워크) (표준 IO)
주제 :
입력 :
첫 번째 줄 : 두 개의 정수 NM
다음 라인 M : 라인 (3) 각각의 정수 A, B, C. 라인 (A)에 접속 가능성을 나타내고, B 두 우사, C. 비용
출력 :
단 한 줄, 가장 비용이 많이 드는 비용 정수. 연결이 모두 우사을 할 수없는 경우 -1 출력한다.
예 :
입력
출력
5-8 42
1 2 3
1 2 3 7
2 3 10
2 4 4
2 8 5
3 4 6
3 5 2
4 5 17
1 2 3
1 2 3 7
2 3 10
2 4 4
2 8 5
3 4 6
3 5 2
4 5 17
아이디어 :
아이디어는 여전히 Keuskal 알고리즘에 따라 사용될 수있는 "<"는로 변경 ">"필요에만 걸친 "최소"전형적인 매우 간단하다. 우리는 코드에 말을 많이하지 않았다.
암호
사용법 #include <iostream> #INCLUDE <cstdio> #INCLUDE <CString을> #INCLUDE <알고리즘> 사용 스페이스 성병; INT FA [ 1001 ]; INT의 N, m, ANS, NUM; 구조체 소 { INT의 BB, 아들, 돈; }; 암소 트리 [ 20001 ]; INT의 발견 ( INT (X)) { 경우 FA ([X]! = X) (FA) [X] = 찾을 FA ([X]); 반환 FA를 [X]; } 공극 추가 ( INT의 X, INT의 Y) { FA [FA [X] = FA [Y]; } BOOL CMP (소 X, Y 소) { 복귀 x.money> y.money; } INT 의 main () { CIN >> >> N m; 위한 ( int로 I = 1 ; i가 <= N; ++ i가 ) FA [I] = I; 위한 ( int로 I = 1 ; I <= m; 내가 ++ ) { CIN >> 트리 [I] 트리 .bb >> [I] .son >> 트리 [I] .money; } 종류 (나무 + 1 , 나무 + 1 +m, CMP); 위한 ( int로 I = 1 ; i가 = N <; 내가 ++ ) { 경우 (! 검색 (트리 [I]는 .bb) = [I] .son) (트리 찾기) { [I] .bb, 트리 [(ADD 트리 I] .son); ANS = ANS + 트리 [I] .money; NUM ++ ; } } 경우 (NUM N- == 1 ) { COUT << ANS; 반환 0 ; } 다른 { COUT <<는 - 1 ; 반환 0 ; } }
일러스트 sahua 종료! ! !