최소 스패닝 트리 문제 ----- P3366 템플릿 [템플릿] 최소 스패닝 트리

제목 설명

이 수치가 연결되어 있지 않으면 그 경우 무향 그래프 주어진 최소 스패닝 트리가 출력 orz 얻어진다

입력 형식

첫 번째 라인은 N은 M이 N은 전체 노드도 상기 M 방향성 에지를 나타내는 두 개의 정수를 포함한다. (N <= 5000, M <= 200,000)를

다음 M 라인이 세 사이의 정수, 이순신 닫아 포함 닫아 아니오 사이, 이순신 노드에 연결된 에지의 길이를 표현

출력 형식

출력의 개수, 즉, 최소 스패닝 트리 각 변의 길이를 포함하는 상기 출력 orz 연결도되지 않는 경우.

샘플 입출력

입력 # 1
4 5 
1 2 2 
1 3 2 
1 4 3 
2 4 3 
3 4 3
출력 # 1
(7)

설명 / 팁

시간의 제약 : 1000MS, 128M

데이터 규모 :

데이터의 20 % : N <= 5, M <= 20

데이터의 40 % : N <= 50, M <= 2,500

데이터의 70 % : N <= 500, M <= 10000

데이터의 100 % : N <= 5000, M <= 200000

샘플 설명 :

따라서, 최소의 총 중량의 에지 스패닝 트리 2 + 2 + 3 = 7

  • 아이디어 : 입력측 (왼쪽 가리키는, 우단 포인트 B, 길이 w) 모두가 디스 조인트 세트 AB 엔드 포인트가 연결되어 있는지 여부를 판정하여, 벡터를 이송 한 후, 소형 ~ 대형의 길이가 다음 벡터 안에 장착하고,이 연결되었다 그렇지 않은 경우 (A, B, W)를 연결 사용 스킵.
  • 마지막으로, 가장자리가 이미도 통신되는 경우, 에지 작고 선거 선택되고, 따라서 최소 길이 인 N-1로 연결된다.
  • 에지는 N-1로 에지를 선택하지 않은 경우에는 통신 확실히도 없다.

 

AC 코드 및 템플릿

#INCLUDE <비트 / STDC H ++.>
 은 USING  공간 STD;
 CONST의  INT NN = 1E4 + 10 ,
 INT N, M]
 값 int FA [NN]
 구조체 노드 {
     INT의 A, B, W, 
    친구 부울  연산자 <(노드 N1, 노드 N2) { // 정렬 노드 구조는 기록 기능 후, CMP를 정의하지 
        복귀 n1.w < ; n2.w 
    } 
} 
벡터 <노드> VE; // 수납 용기 측 

의 INT 찾기 ( INT X ) { // 조상 찾기 
    IF (X 방향을! = FA [X 방향]) 
        FA [X 방향] =발견 FA ([X]);
    반환 FA를 [X]; 
} 

공극이 (조인 의 INT (X), INT의 y)를 { // 合并
    INT FX는 = (X) = 기 찾는 검색 (Y)를;
    경우 (FX =! 기) 
        FA [FX] = 기; 
} 


INT 의 main () { 
    CIN >> N >> M;
    위한 ( int로 I = 1 , N = 1이 <; 내가 ++) FA [I] = I;
    int로 를, B, w;
    반면 (M-- ) { 
        는 scanf ( " % D % D % D ' , A, 및 B & W);
        ve.push_back ({A, B, W}) 
    } 
    정렬 (ve.begin () ve.end ()); // 정렬 
      SUM = 0 ; // 모든 에지 패턴 전체 길이 
    INT의 가장자리 = 0 ; // 측면의 선택 수 
    에 대한 : (자동 V는 VE) {
         IF {(! 찾기 (VA) = 찾기 (VB)) // 점이 유니콤 B 지점이 아닌 경우,이 가장자리 병합 선택 
            가입 (VA, VB ) 
            SUM + = VW, 
            가장자리 ++ ; 
        } 
    } 
    IF (가장자리> N- = 1이다. ) SUM COUT << << ENDL;
     의 다른 COUT <<" orz " << ENDL; 
    
    반환  0 ; 
}

 

추천

출처www.cnblogs.com/bigbrox/p/11311887.html