데이터 구조 실험: 연결 분량 개수
Time Limit: 1000MS Memory limit: 65536K
제목 설명
무방 향도 에서 정점 vi 에서 정점 vj 까지 경로 가 있 으 면 vi 와 vj 가 연결된다 고 한다.만약 그림 에서 임의의 두 정점 사이 가 연결 된다 면 이 그림 을 연통 도 라 고 부른다.
그렇지 않 으 면 이 그림 을 비 연통 도 라 고 부 르 면 그 중의 큰 연통 자 도 를 연통 분량 이 라 고 한다. 여기 서 이른바 큰 것 은 서브 맵 에 포 함 된 정점 개수 가 매우 크다 는 것 을 말한다.
예 를 들 어 하나의 무 방향 도 는 5 개의 정점 이 있 고 1 - 3 - 5 는 연결 되 어 있 으 며 2 는 연결 되 어 있 고 4 는 연결 되 어 있 으 며 이 무 방향 도 는 3 개의 연결 분량 이 있다.
입력
첫 번 째 줄 은 정수 T 로 T 조 테스트 샘플 (0 < T < = 50) 이 있 음 을 나타 낸다.테스트 샘플 마다 한 줄 에 두 개의 정수 N, M 을 포함 합 니 다. (0 < N < = 20, 0 < = M < = 200)
각각 N 개의 정점 과 M 개의 변 을 대표 한다.아래 의 M 줄 은 줄 마다 두 개의 정수 u, v, 정점 u 와 정점 v 가 연결 되 어 있다.
출력
줄 마다 하나의 정수, 분량 의 개 수 를 연결 하 다.
예제 입력
2
3 1
1 2
3 2
3 2
1 2
예제 출력
2
1
제시 하 다.
근원
cz
예제 프로그램
#include
#include
#include
#define N 300
int map[N][N],vis[N];
void dfs(int s,int n)
{
for(int i = 1;i <= n;i++)
{
if(map[s][i] && !vis[i])
{
vis[i] = 1;
dfs(i,n);
}
}
}
void god(int n)
{
int i;
int count = 0;
for(i = 1;i <= n;i++)
{
if(!vis[i])
{
dfs(i,n);
count++;
}
}
printf("%d
",count);
}
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
int a,b;
memset(map,0,sizeof(map));
memset(vis,0,sizeof(vis));
scanf("%d %d",&n,&m);
for(int i = 1;i <= m;i++)
{
scanf("%d %d",&a,&b);
map[a][b] = 1;
map[b][a] = 1;
}
god(n);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.