zoukankan      html  css  js  c++  java
  • 犯罪团伙 codevs 3554

    这是一道经典的水题,提供两种方法:①深搜  ②并查集

    NO.1 深度优先搜索:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    bool a[10100],f[10100][10100];
    int n,m,x,y;
    void dfs(int t)
    {
    a[t]=1;
    for (int i=1;i<=n;i++)
    if (a[i]==0 && f[t][i]==1)
    dfs(i);
    }
    int main()
    {
    cin>>n;
    cin>>m;
    memset(a,0,sizeof(a));
    memset(f,0,sizeof(f));
    for (int i=1;i<=m;i++)
    {
    cin>>x>>y;
    f[x][y]=1;
    f[y][x]=1;
    }
    int ans=0;
    for (int i=1;i<=n;i++)
    if (a[i]==0)
    {
    ans+=1;
    dfs(i);
    }
    cout<<ans;
    }

    NO.2 并查集:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int n,m,x,y,t1,t2,f[10010];
    int find(int t)
    {
    if (f[t]!=0)
    f[t]=find(f[t]);
    else
    return t;
    return f[t];
    }
    int main()
    {
    cin>>n>>m;
    memset(f,0,sizeof(f));
    for (int i=1;i<=m;i++)
    {
    cin>>x>>y;
    t1=find(x);
    t2=find(y);
    if (t1!=t2)
    f[t2]=t1;
    }
    int ans=0;
    for (int i=1;i<=n;i++)
    if (f[i]==0)
    ans+=1;
    cout<<ans;
    }

  • 相关阅读:
    列表、元组、字典练习
    周总结04
    站立会议07
    人月神话阅读笔记01
    站立会议06
    站立会议05
    站立会议04
    典型用户需求分析第一期
    站立会议03
    站立会议02
  • 原文地址:https://www.cnblogs.com/xiaoqi7/p/5308453.html
Copyright © 2011-2022 走看看