1 // 트리 알고리즘 가중치 걸쳐도 프림 최소로 구하지 않고 2 . 3 #INCLUDE <iostream> 4. #INCLUDE <CString을> 5. 은 USING 스페이스 STD를] . 6 #DEFINE의 INF의 0x3f3f3f3f . 7 INT 지도 [ 505 ] [ 505 ] . 8 BOOL 구경 [ 505 ] . 9 INT Lowcost [ 505 ] 10 INT 프림 ( INT N-) . 11 { 12는 INT ANS = 0 , I, J, 13은 memset 함수 (참조 false로, sizeof의 (구경)) 14 [구경 . 1 ] = 참 ; // . 선택 점 1 점으로부터 프림 알고리즘 시작 (15) 에 대한이 (I는 = 2 ; I <= N-; I ++) // 시점으로부터 2 1 Lowcost 고려한 16 [I] = 맵 [Lowcost을 1 ] [I] . 17 대 (I는 = 2 I ++; I는 = N- < ) (18)가 { 19. //를 찾을 최소 비용은 현재 세트 포인트 선택한 20 INT 분 = INF, P] (21)가 대해 (J = 2 , J <= N-은, J ++ ) (22)는 IF는(! 구경은 [J]를 && Lowcost [J] < 분) 23가 { 24 분 = Lowcost [J], (25) P = J; 26이다 } 27 IF (최소 == INF) // 없이 최소 통신하지 요점은 기재되어 있지 않으면 스패닝 트리 반품 -1 28 리턴 - 1. ; 29 // 선정 플러스이 최소 비용 30 ANS + = 분; 31이다 // 선택된 세트 포인트가 추가된다 (32) 구경 [P] = true로 , 33는 위해 (J = 1. ; J <= N-은, J ++ ) (34)는 IF(! 구경 [J] && lowcost [j]가>는 [P]가 [j]가 매핑)하여 35 lowcost [j]가 = [P]를 매핑 [J] 36 } 37 리턴 ANS; 38 } 39 INT 의 main () 40 { 41 INT N, m; 42 CIN >> >> N m; 43 memset 함수 (지도, INF, 는 sizeof (지도)); 44 대 ( INT 나 = 1 ; i가 <= N; I ++ ) 45 { 46 INT U, V, w; 47 CIN >> >> U V >> w; (48) 맵 [U]는 [V] = w는; 49 개 맵 [V] [U] = w; 50 } 51 COUT << 프림 (m) << ENDL; 52 반환 0 ; 53 }