通畅工程

来源:互联网 发布:西安软件新城附近楼盘 编辑:程序博客网 时间:2024/06/10 09:17

水题,dfs,并查集都可以做,习惯于dfs

#include<cstdio>#include<iostream>#include<cstring>using namespace std;int n,m;bool vis[1005][1005];bool v[1005];void dfs(int x){    v[x]=1;    //cout<<x<<endl;    for(int i=1;i<=n;i++)        if(vis[x][i]&&!v[i])            dfs(i);}int main(){    while(~scanf("%d%d",&n,&m))    {        if(n==0)            break;        memset(v,0,sizeof(v));        memset(vis,0,sizeof(vis));        while(m--)        {            int a,b;            scanf("%d%d",&a,&b);            vis[a][b]=vis[b][a]=1;        }        int cnt=0;        for(int i=1;i<=n;i++)            if(!v[i])        {            cnt++;            // cout<<"Cnt"<<cnt<<endl;            dfs(i);        }        cnt=cnt--;        printf("%d\n",cnt);    }    return 0;}

原创粉丝点击