您的位置:首页 > 其它

UVA 10608 dfs或者并查集

2013-10-22 21:02 183 查看
题意:A和B是朋友,B和C是朋友,那么A和C是朋友,输入一些朋友关系,输出最大人数的朋友圈。

1.直接深搜一遍

#include<cstdio>
#include<vector>
#include<cstring>
#define MAXN 30000+10
using namespace std;
bool vis[MAXN];
vector<int>st[MAXN];
int n,m,ans,maxx;
void dfs(int cur)
{
    if(vis[cur])  return ;
    vis[cur]=true;
    ans++;
    for(int i=0; i<(int)st[cur].size(); i++)
    {
        int a=st[cur][i];
        if(!vis[a])
            dfs(a);
    }
    return ;
}
int main()
{
//    freopen("in.txt","r",stdin);
    int cas;
    scanf("%d",&cas);
    while(cas--)
    {
        scanf("%d%d",&n,&m);
        memset(vis,false,sizeof(vis));
        for(int i=0; i<=n; i++)
            st[i].clear();
        for(int i=0; i<m; i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            st[a].push_back(b);
            st.push_back(a);
        }
        maxx=0;
        for(int i=1; i<=n; i++)
        {
            if(!vis[i])
            {
                ans=0;
                dfs(i);
                maxx=max(ans,maxx);
            }
            if(maxx>n/2+1)   break;
        }
        printf("%d\n",maxx);
    }
    return 0;
}


[b]2.并查集 经典题目


#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 30000+10
using namespace std;
int p[MAXN],num[MAXN];
int find(int x)
{
    return x==p[x]?x:p[x]=find(p[x]);
}
int main()
{
//    freopen("in.txt","r",stdin);
    int cas,n,m;
    scanf("%d",&cas);
    while(cas--)
    {
        scanf("%d%d",&n,&m);
        for(int i=0; i<=n; i++)
            p[i]=i;
        for(int i=0; i<m; i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            a=find(a);
            b=find(b);
            if(a!=b)
                p[a]=b;
        }
        memset(num,0,sizeof(num));
        int maxx=0;
        for(int i=1; i<=n; i++)
        {
            int a=find(i);
            num[a]++;
        }
        for(int i=1; i<=n; i++)
            maxx=max(num[i],maxx);
        printf("%d\n",maxx);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: