헤이 POJ 2395 (최소 스패닝 트리)의 아웃

원래 제목

주제 링크

주제 분석

그래서만을 추구하는 과정에서 나무 꼼꼼한 기록 최소 스패닝 트리 가장자리에 걸쳐 최소를 계산해야, 언뜻보기에 당신은 최소 스패닝 트리입니다 볼 수 있지만 실제로 성격의 스패닝 트리 최소 사항을 충족하는 데 필요한 주제에 대해 생각 당신이 할 수있는 최대.

코드

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 }

 

추천

출처www.cnblogs.com/VBEL/p/11419529.html