Codeforces 라운드 # 600 (사업부. 2) D. 조화 도표

주제 주소 : http://codeforces.com/contest/1253/problem/D

질문의 의미 : 당신이 두 숫자를주고, n과 m. 대표 점 N은, 가장자리 해요. L 및 N (R)가 L과 통신하는 임의의 수의 두 지점 A, 두 통신 지점 (L, R)을 나타낸다면, 그것은 최소 Q를 ​​만족시키기 위해 추가 에지 개수를 플러스 측을 만족하지 조건.

아이디어 : DFS 이미 상호 포인트 플러스 마크, x의 현재 컬렉션의 최대 지점을 찾아, X는 설정 자체가 또한있을 경우, 가장자리를 추가 적은이 시점에 연결되어 있지 세트 이상입니다 렌즈 테두리 가공 후 직접 혼입 DFS.

AC 코드 :

1 #INCLUDE <iostream>
 2 #INCLUDE <cstdio>
 3 #INCLUDE <CString을>
 4 #INCLUDE <알고리즘>
 5 #INCLUDE <벡터>
 6  이용  공간을 성병;
7 형식 정의  LL;
8  CONST의  INT N = 200,005 ;
9  의 INT MK [N, N, m, CNT = 1 ;
10  의 INT NUM = 1 ;
11 벡터 < INT > g [N];
(12)  보이드 DFS ( INT의 TM) {
 13     MK [(TM)] = . 1 ;
 14      CNT가 = 최대 (CNT (TM))
 (15)      // 모든 지점이 그에 접속 DFS, 에지의 수는 200,000 개 이상의 아니다 초과 염려가없는 
16       (자동 I은 : G [(TM)] ) IF (MK [I]) DFS (I) ;!   // 자동 대신 int로 할 수있다 
(17).  }
 (18) 인  공극 솔 () {
 19.      INT ANS = 0 ]
 (20)이      그동안 (NUM <= N-) {
 21은          그동안 (MK [NUM ]) NUM ++;    // 반복 처리가 비 통신 찾을 
22          IF (NUM <CNT)를 ANS ++ ;
 23이다          ) DFS (NUM;
 24      }
 25     COUT << ANS << ENDL;
26  }
 27  INT 의 main () {
 28      CIN >> >> N m;
29      INT U, V;
30       ( INT 난 = 0 ; I <m은, I ++ ) {
 31          CIN >> >> U V는;
32          g이었다 U] .push_back (V);
33          g이었다 V] .push_back (U);
34      }
 35      졸 ();
36      반환  0 ;
37 }

 

자동 :이 일이 정말 사용하기 쉽고, 코드가 긴 아니라 큰 역할.

자동 요소 이후에 정의 된 형식 대신 자동 또한 INT 행을 변경 키워드, 사용할 수 있습니다 알고 있습니다. 그러나 우리가 모르는 어떤 피해 및 혜택, 여전히 이해, 학습.

추천

출처www.cnblogs.com/xunzf0402/p/11892272.html