zoukankan      html  css  js  c++  java
  • lightoj1009【DFS】

    思路:

    连通快+二分图,每次+二分图大的元素个数。

    #include<bits/stdc++.h>
    using namespace std;
    typedef unsigned long long ULL;
    typedef long long LL;
    const int N=2e4+10;
    bool ex[N],vis[N];
    vector<int>e[N];
    int n,au,av;
     
    void DFS(int u,int flag)
    {
        if(flag) av++;
        else au++;
        int sz=e[u].size();
        for(int i=0;i<sz;i++)
        {
            int v=e[u][i];
            if(vis[v]) continue;
            vis[v]=true;
            DFS(v,1-flag);
        }
    }
     
    int main()
    {
        int cas=1,T;
        scanf("%d",&T);
        while(T--)
        {
            int u,v;
            scanf("%d",&n);
            for(int i=1;i<=20000;i++)
                e[i].clear();
            memset(ex,false,sizeof(ex));
            for(int i=0;i<n;i++)
            {
                scanf("%d%d",&u,&v);
                ex[u]=ex[v]=true;
                e[u].push_back(v);
                e[v].push_back(u);
            }
            memset(vis,false,sizeof(vis));
            int ans=0;
            for(int i=1;i<=20000;i++)
            {
                if(ex[i]&&!vis[i]){
                    au=0;
                    av=0;
                    vis[i]=true;
                    DFS(i,0);
                    ans=ans+max(au,av);
                }
            }
            printf("Case %d: %d
    ",cas++,ans);
        }
        return 0;
    }
     


  • 相关阅读:
    20161101学习笔记
    20161031学习笔记
    20161028学习笔记
    20161027学习笔记
    ReentrantLock Condition
    ReentrantLock 重入锁
    CountDownLatch用法与原理
    场景化解释 AQS原理
    Atomic
    多线程工具类
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777385.html
Copyright © 2011-2022 走看看