当前位置:编程学习 > C/C++ >>

九度教程第66题

C语言源码:
[cpp]  
#include<stdio.h>  
int a[1000][1000];  
void dfs(int k,int visited[],int n)  
{  
    int i;  
    for(i=0;i<n;i++)  
    {  
        if(a[k][i]!=0&&visited[i]==0)  
        {  
            visited[i]=1;  
            dfs(i,visited,n);  
        }  
    }  
}  
int main()  
{  
    int n,m,i,j,k,l,num,visited[1000];  
    scanf("%d",&n);  
    while(n)  
    {  
        for(i=0;i<n;i++)  
            for(j=0;j<n;j++)  
                a[i][j]=0;  
        scanf("%d",&m);  
        for(i=1;i<=m;i++)  
        {  
            scanf("%d %d",&k,&l);  
            a[k-1][l-1]=1;  
            a[l-1][k-1]=1;  
        }  
        for(i=0;i<n;i++)  
            visited[i]=0;  
        num=0;  
        for(i=0;i<n;i++)  
        {  
            if(visited[i]==0)  
            {  
                dfs(i,visited,n);  
                num++;  
            }  
        }  
        printf("%d\n",num-1);  
        scanf("%d",&n);  
    }  
}  
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,