zoukankan      html  css  js  c++  java
  • P1894 [USACO4.2]完美的牛栏The Perfect Stall

    链接:P1894

    ----------------------------------------------------------

    我觉得这道题如果去掉题面,就是一道蓝题了。

    -----------------------------------------------------------

    这道题还是裸的二分图匹配,用匈牙利算法就可以AC掉。

    什么是匈牙利算法?匈牙利

    代码几乎差不多,也不需要优化,读入比模板题还复杂点,(他们应该换一下颜色)

    ----------------------------------------------------------

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 using namespace std;
     5 int vis[2001];
     6 int head[20001];
     7 int match[10000];
     8 struct b{
     9     int to;
    10     int next;
    11 } e[100001];
    12 int n,m;
    13 int x;
    14 int p;
    15 int ans;
    16 void add(int f,int t){
    17     p++;
    18     e[p].next=head[f];
    19     e[p].to=t;
    20     head[f]=p;
    21     }
    22 int y;
    23 bool dfs(int f){
    24     for(int i=head[f];i;i=e[i].next){
    25         int v=e[i].to;
    26         if(vis[v]) continue;
    27         vis[v]=1;
    28         if(!match[v]||dfs(match[v])){
    29             match[v]=f;
    30             return 1;
    31         }
    32     }
    33     return 0;
    34 }
    35 int main(){
    36     scanf("%d%d",&n,&m);
    37     for(int i=1;i<=n;++i){
    38         scanf("%d",&x);
    39         for(int j=1;j<=x;++j){
    40             cin>>y;
    41             add(i,y);
    42         }
    43     }
    44     for(int i=1;i<=n;++i){
    45         memset(vis,0,sizeof(vis));
    46         if(dfs(i)) ans++;
    47     }
    48     printf("%d",ans);
    49     return 0;
    50 }
    Ac
  • 相关阅读:
    Redis数据结构之字典
    多路复用
    Redis数据结构之SDS
    记一个图片转换神器vectorizer
    Java基础之面向对象上
    科学
    Linux内核源码分析之setup_arch (二)
    Linux内核源码分析之setup_arch (一)
    printk 流程分析
    多个线程顺序打印问题,一网打尽
  • 原文地址:https://www.cnblogs.com/For-Miku/p/11299119.html
Copyright © 2011-2022 走看看