首页 > 其他 > 详细

P1894 [USACO4.2]完美的牛栏The Perfect Stall

时间:2019-08-04 19:51:13      阅读:60      评论:0      收藏:0      [点我收藏+]

链接: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

 

P1894 [USACO4.2]完美的牛栏The Perfect Stall

原文:https://www.cnblogs.com/For-Miku/p/11299119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!