루오 구가 : 제한 시간은 1.00s 메모리 제한 125.00MB을
시간 제한 : 20 초 메모리 제한 : 1백62메가바이트주제 링크 : https://www.lydsy.com/JudgeOnline/problem.php?id=1006
루오 구 : https://www.luogu.com.cn/problem/P3196
기술
K 국가는 날카로운 삼각형 국가, 그들이 그 삼각형 생각 만 사랑의 삼각 원리 사람도 교환입니다 : 즉 AB 상호 이해, BC는 CA를 서로를 알아가
., 알고 서로 삼각 관계를 강화하기 위해 간단하고 효율적이며, K 국가는 금지되어 있습니다 관계 다섯면 관계 소위 N 양면 관계 사방의 존재는 N 개별 A1A2를 지칭하지
(A1A2) (A2A3) ... : 관계 이해해야 만 사이 ...는 N 존재 (AnA1)를, 다른 및 4면 관계가 네 ABCD AB를 의미 같은 관계의 이해, BC는, C
D, DA가 서로를 알고, 게임의 모든 사람들이 부정 행위를 방지하기 위해, 사람들의 쌍 규정 한 팀에서 서로를 알 수 없습니다 때 AC는, BD 몰라 왕이 상을 알고,
분리의 최소 수는 나눌 수 있습니다.
입력
두 정수의 제 N 라인, M. 1 <= N <= 10000,1 < = M <= 1000000 N은 입력 포인트들의 각 쌍 M 다음 M 라인 사이의 관계를 이해하고, 개인을 표시
친구
산출
출력 정수, 팀의 최소 번호를 나눌 수 있습니다
샘플 입력
1 2
1 4
2 4
2 3
3 4
샘플 출력
힌트
용액 (3) (2) (4)
emmm, 알고에 볼 수있는지도가 그래프 색상에 대한 그래프의 최소한의 착색, 인접한 점 당신이 사용할 수있는 방법을 많은 색상을 물어 적어도하지 동일한 색상을 필요로한다는 것이다립니다.
여기에 가장 큰 잠재적 인 알고리즘이있어 다음과 같이 특정 프로세스는 다음과 같습니다
각 지점의 잠재적 1. 시작은 0, 어떤이 삭제 지적이다.
2. 1 점의 전위와의 부착 점을 삭제, 최대 전위 점 삭제 삭제.
모든 지점이 제거 될 때까지 2를 반복합니다.
그래서이 삭제 된 순서, 그리고이 순서는 다른 가능성의 번호를 삭제 나타난 것입니다, 색상의 최소 수는 얼마나이다.
두 번째 테스트 포인트 루오 밸리에서, 다음 시간에 잡히면, BZOJ 문제가 아니라 같은 산소의 최적화를 엽니 다.
다음은 AC 코드입니다 :
#INCLUDE <cstdio> #INCLUDE <CString을> #INCLUDE <큐> #INCLUDE <알고리즘> 사용 공간을 성병; CONST INT의 MAC 1E6 + = 10 ; CONST INT MAC2 1E4 + = 10 ; 구조체 노드 { INT 로 옆, w; 예} [MAC << 1 ]; INT 헤드 [MAC2, CNT = 0 , 힘 [MAC2, 색 [MAC2, 점 [MAC2]; 구조체 냄비 { INT 발, ID; 부울 연산자 <( CONST 포트 및 a)CONST { 창 브로 < a.val; } }; 보이드 추가 ( INT U, INT V) { 예 [ ++ CNT] = {V 노드 머리 [U], 0 }; 헤드 [U] = CNT; } int 형 ) (주 { INT를 N, m; scanf와 ( " % D % D " , 및 N, m); memset 함수 (머리 - 1 , 를 sizeof 헤드); 위한 ( INT 난 = 1 ; I <= m I ++ ) { 지능U, V; scanf와 ( " % D % D ' , U, 및 V); 추가 (U를 V) 추가 (V, U); } priority_queue <냄비> Q; q.push (포트 { 0 , 1 }); INT ANS = 0 ; 동안 (! q.empty ()) { 냄비 지금 = q.top (); () q.pop; 경우 (힘 [now.id]) 계속 ; 힘 [now.id] = 1 ; INT U = now.id; 경우 (! 색 [now.val])는 색 [now.val = ans와 ++1 ; 위한 ( INT 나 머리 = [U] I =! - 1 ] I = 예 [I] 다음 내용) { INT의 V = 예 [I] .TO; 경우 (힘 [V]) 계속 ; 포인트 [V] ++ ; q.push (냄비 포인트 {[V], V}); } } 의 printf ( " 가 % d \ n " , ANS); 반환 0 ; }