zoukankan      html  css  js  c++  java
  • poj1466二分图

      左右互搞。要除以(roll神 教的)

    二分图中

    最大独立点集 = 顶点 -  最大匹配

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <climits>
    #include <string>
    #include <iostream>
    #include <map>
    #include <cstdlib>
    #include <list>
    #include <set>
    #include <queue>
    #include <stack>
    #include<math.h>
    using namespace std;
    const int maxn=555;
    int used[maxn];
    int link[maxn];
    int Map[maxn][maxn];
    int n;
    int dfs(int x)
    {
        for(int i=0;i<n;i++){
            if(!used[i]&&Map[x][i]){
                used[i]=1;
                if(link[i]==-1||dfs(link[i])){
                    link[i]=x;return 1;
                }
            }
        }
        return 0;
    }
    
    void solve()
    {
        memset(link,-1,sizeof(link));
        int ans=0;
        for(int i=0;i<n;i++){
            memset(used,0,sizeof(used));
            if(dfs(i)) ans++;
        }
        cout<<n-ans/2<<endl;
    }
    int main()
    {
        int a;int b;int c;
        char str[100];
        while(scanf("%d",&n)!=EOF){
            for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
            Map[i][j]=0;
            for(int i=0;i<n;i++){
                scanf("%d: (%d)",&a,&b);
                for(int j=0;j<b;j++){
                    scanf("%d",&c);
                    Map[a][c]=1;
                }
            }
            solve();
        }
        return 0;
    }
  • 相关阅读:
    第二次作业
    大学——新生活方式
    第四次作业
    第三次作业
    第二次作业——起航
    梦开始的地方
    第四次作业
    第三次作业
    第二次作业
    博客作业 随笔
  • 原文地址:https://www.cnblogs.com/yigexigua/p/3890217.html
Copyright © 2011-2022 走看看