• HDU 1054 Strategic Game(无向二分图的最大匹配)


    ( ̄▽ ̄)"

    //凡无向图,求匹配时都要除以2
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    using namespace std;
    
    const int MAXN=1505;
    int uN;
    vector<int> g[MAXN];
    int link[MAXN];
    bool vis[MAXN];
    
    bool DFS(int u)
    {
        for(int i=0;i<g[u].size();i++)
        {
            int v=g[u][i];
            if(!vis[v])
            {
                vis[v]=1;
                if(link[v]==-1||DFS(link[v]))
                {
                    link[v]=u;
                    return true;
                }
            }
        }
        return false;
    }
    
    int hungary()
    {
        int res=0;
        memset(link,-1,sizeof(link));
    
        for(int u=0;u<uN;u++)
        {
            memset(vis,0,sizeof(vis));
            if(DFS(u)) res++;
        }
        return res;
    }
    
    int main()
    {
        int n,node,edge;
        while(~scanf("%d",&n))
        {
            for(int i=0;i<n;i++)
                g[i].clear();
            for(int i=0;i<n;i++)
            {
                scanf("%d:(%d)",&node,&edge);
                int to;
                for(int j=0;j<edge;j++)
                {
                    scanf("%d",&to);
                    g[node].push_back(to);
                    g[to].push_back(node);
                }
            }
            uN=n;
            printf("%d
    ",hungary()/2);
        }
        return 0;
    }
  • 相关阅读:
    「考试」省选62
    「考试」省选61
    「考试」省选59
    「刷题」THUPC泛做
    「考试」省选58
    「考试」省选57
    「考试」省选56
    「考试」省选55
    「考试」省选54
    「考试」省选52
  • 原文地址:https://www.cnblogs.com/atmacmer/p/5201865.html
Copyright © 2020-2023  润新知