고속 철도 네트워크
설명 :
국가 건설 도시를 연결하는 고속 철도 라인의 숫자로 구성 고속철도 네트워크를. 기존 고속철도 구조가 통계 테이블로 분류 될 수있는 상기 표 고속 철도 선에 직접 접속 된 두 도시마다. 건설 (고속 철도 선 최대를 통해만큼 간접적으로, 그러나 반드시 직접 고속 철도 선에 연결) 국가 당 두 도시 간 고속 철도 교통을 달성 할 수있는 대상 국가입니다. 것 또한 빌드와 같은 고속 철도 라인의 최소 번호를 물어?
설명을 입력합니다 :
시험 라인 (1)은 각각 두 개의 양의 정수를 주어, 도시의 수는 N이다 (<1,000) 기존 고속철도 줄 수 M. 고속철도 라인에 대응하는 M 행 M 다음, 각 라인은 양의 정수 쌍 직접 고속 행 번호 각각 연결된 두 도시 문서 주어진다. 단순화하기 위해, 도시는 1 N. 번까지 번호가 매겨진
출력 설명 :
출력의 라인에 또한 고속철도 라인의 최소 수를 구축해야합니다.
샘플 입력 :
9 8
1 2
1 3
2 4
3 4
5 7
5 6
6 7
8 9
샘플 출력 :
이
프롬프트 달성하기 :
가능한 깊이 우선 또는 너비 우선 탐색을 해결하기위한 통신 구성 요소를 감소시키기 위하여 실제 문제의 수도 MFSet를 해결할 수있다.
#INCLUDE <STDIO.H> 사용법 #include <stdlib.h> INT Vset으로 [100]; INT findset INT (X) { 반면 (Vset으로 [X]! = 0) X = Vset으로 [X]; 반환 X; } () 주요 int로 { INT의 M, N, I, A, B, VA, VB, 카운트; scanf와 ( "%의 D", N); 위한 (I = 0; I는 <N; I ++는) Vset으로 [I] = 0; scanf와 ( "%의 D", m); 대 (나는 <m; 나는 0 = I ++) { scanf와 ( "% D % D ', A, 및 B); VA = findset (a); VB = findset (b); 경우 (VA! = VB) Vset으로 [VA = VB; } 카운트 = 0; 위한 (I = 0; I는 <N; I ++는) { 경우 (Vset으로 [I] == 0) ++ 계산; } 의 printf ( "%의 D"카운트-1); 0을 반환; }