zoukankan      html  css  js  c++  java
  • POJ 1466 Girls and Boys

    。。。。。。。。。。。

    啥也不想说,我只想骂出题人!!!

    能不能人性点!!!R尼玛,出题数据,那是随便随机的??你知道你浪费了多少人的时间??

    你知道你折磨了多少人的心神??

    经过被百般蹂躏,我知道了它的后台数据的某些一定是不对照的,比如2跟1有关系,1跟2关系并不一定给你写出了

    你题目很清楚的告诉读者:跟个人的有关系的人数!!你如果说1跟2搞,而2却不一定跟1搞,那总人数-匹配数/2也不对!

    尼玛的怎么让AC!!很明显必须是相互的!!

    尼玛你这样搞是会折寿的……

    算了,说点正事……

    这个是:求最大独立集

    最大独立集==N-最大匹配数(即最大覆盖点数)

    理解:除去有关系了,都是没关系的

    这个相对好理解一点,那俩关系哥都理解!

    这俩天做的题都是:求最大匹配数的(即find())算法!

    暑假美学二分图,这算是补上了!

    View Code
    #include <stdio.h>
    #include <string.h>

    #define N 500
    #define M 125000

    int nodev[N];
    int nodeu[M],next[M];

    /*
    int getNumfromStr(char *s)
    {
    int i=0,num=0;

    while(s[i]<'0'||s[i]>'9') i++;
    do
    {
    num=num*10+s[i]-'0';
    i++;
    }while(s[i]>='0'&&s[i]<='9');
    return num;
    }
    */

    void Build_Graph(int n)
    {
    int i,v,u,ind,num;
    // char s[10];
    memset(nodev,-1,sizeof(nodev)); ind=0;

    for(v=0;v<n;v++)
    {
    // scanf("%s",s); scanf("%s",s); num=getNumfromStr(s);
    scanf("%d: (%d)",&num,&num);
    for(i=0;i<num;i++)
    {
    scanf("%d",&u);
    // if(u>v)
    {
    nodeu[ind]=u;
    next[ind]=nodev[v];
    nodev[v]=ind;
    ind++;
    }
    }
    }
    }

    int pre[N];
    bool no[N];
    bool find(int v)
    {
    int i,u;

    for(i=nodev[v];i!=-1;i=next[i])
    {
    u=nodeu[i];
    if(!no[u])
    {
    if(pre[u]==-1 || (no[u]=true,find(pre[u])))
    {
    pre[u]=v;
    return true;
    }
    }
    }
    return false;
    }
    int solve(int n)
    {
    int v,cnt=0;

    memset(pre,-1,sizeof(pre));

    for(v=0;v<n;v++)
    {
    memset(no,false,sizeof(no));
    if(find(v)) cnt++;
    }
    // return n-cnt;
    return n-cnt/2;

    }

    int main()
    {
    int n;

    // freopen("input.txt","r",stdin);
    while(scanf("%d",&n)!=EOF)
    {
    Build_Graph(n);
    printf("%d\n",solve(n));
    }

    return 0;
    }
  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/fornever/p/2227479.html
Copyright © 2011-2022 走看看