원래 제목
주제 분석
그래서만을 추구하는 과정에서 나무 꼼꼼한 기록 최소 스패닝 트리 가장자리에 걸쳐 최소를 계산해야, 언뜻보기에 당신은 최소 스패닝 트리입니다 볼 수 있지만 실제로 성격의 스패닝 트리 최소 사항을 충족하는 데 필요한 주제에 대해 생각 당신이 할 수있는 최대.
코드
1 #INCLUDE <iostream> 2 #INCLUDE <알고리즘> 3 #INCLUDE <유틸리티> 4 #INCLUDE <cstdio> 5 #INCLUDE <cmath> 6 #INCLUDE <CString을> 7 #INCLUDE < 문자열 > 8 #INCLUDE <벡터> 9 # 포함 <적층> 10 #INCLUDE <큐> 11 #INCLUDE <지도> 12 #INCLUDE은 < 설정 > 13 14 사용 스페이스 성병; 15 타입 정의 긴 긴 LL; INF_INT = 0x3f3f3f3f ; 17 CONST LL INF_LL = 0x3f3f3f3f3f3f3f3f ; (18) (19) 의 typedef 쌍 < INT , INT > P; 20 INT의 N, m; 21 INT의 에지 [ 3000 ] [ 3000 ]; 22 INT 사용 [ 3000 ]; 23 INT의 ANS; 24 25 공극 프림 () 26 { 27 priority_queue <P 벡터 <P> 큰 <P>> 케; (28) 에 대한 ( INTI = 1 ; i가 = <N; ++ i가 ) 29 일 경우 (에지 [ 1 ! [I] = INF_INT) que.push (P (에지 [ 1 ] [i]는, I)); 30 [사용 1 ] = 참 ; 31 일 동안 (que.size ()) 32 { 33 P를 p = que.top (); que.pop (); 34 의 경우 (사용 된 [p.second]) 계속 ; 35 중고 [p.second는] = 참 ; 36 ANS = 최대 (ANS, p.first); (37) 에 대한이 ( int로 I = 1 난 ++; i가 N = < ) 38 의 경우 (에지 [p.second [I] = INF_INT &&! que.push [i]를 이용) (P (에지 [p.second] [i]는, I)); 39 } 40 } 41 42 INT 주 () 43 { 44 // freopen을 ( "black.in", "R", 표준 입력); 45 // freopen을 ( "black.out", "w", 표준 출력); 46 CIN >> >> N m; (47) 에 대한이 ( int로 I = 1 ; i가 = <N; I ++ ) 48 대 ( INT J = 1 ; J <= N; J ++) 에지 [I] [J] = INF_INT; 0 ; I의 M <; 내가 ++ ) 50 { 51 INT의 A, B, C; 52 는 scanf ( " % D % D % D ' , A, 및 B, 및 C); 53 가장자리는 [A], [B]는 = 분 (에지 [A] [B], c); 54 가장자리 [B] [A] = 분 (에지 [B] [A], c); 55 } 56 프림 (); 57 의 printf ( " % D \ 없음 " , ANS); 58 반환 0 ; 59 }