zoukankan      html  css  js  c++  java
  • HDU 1068 Girls and Boys

    题目大意:n个同学,一些男女同学会有缘分成为情侣,格式ni:(m) n1 n2 n3表示同学ni有缘与n1,n2,n3成为情侣,求集合中不存在有缘成为情侣的同学的最大同学数。 

    题解:图论知识:二分图最大独立集=总点数-二分图最大匹配,但是不知道同学的性别,所以将一个人同时看做女生和男生,就形成了二分图~

    #include <cstring>
    #include <cstdio>
    #include <vector> 
    using namespace std;
    const int N=505;
    int link[N],used[N];
    vector v[N];
    bool Dfs(int k){
        for(int i=0;i<v[k].size();i++){
            int a=v[k][i];
            if(used[a]==0){
                used[a]=1;
                if(link[a]==-1||Dfs(link[a])){link[a]=k;return 1;}
            }
        }return 0;
    }
    int main(){
        int i,count,a,n,b,t,k;
        while(~scanf("%d",&n)){
            k=n;
            memset(link,-1,sizeof(link));
            for(i=0;i<n;i++)v[i].clear();
            while(n--){
                scanf("%d: (%d)",&a,&b);
                while(b--){
                    scanf("%d",&t);
                    v[a].push_back(t);
                    v[t].push_back(a);
     
                }
            }count=0;
            for(i=0;i<k;i++){
                memset(used,0,sizeof(used));
                if(Dfs(i))count++;
            }
            printf("%d
    ",k-(count/2));
        }
        return 0;
    }
    
  • 相关阅读:
    LOJ3160 「NOI2019」斗主地
    常系数齐次线性递推
    最小树形图——朱刘算法学习小记
    Linux系统分区(一)
    Linux系统启动过程(二)
    Linux系统目录结构(三)
    cross_val_score
    sklearn.pipeline.Pileline
    DBSCAN密度聚类算法
    特征选择
  • 原文地址:https://www.cnblogs.com/forever97/p/3625414.html
Copyright © 2011-2022 走看看