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

Posted for-miku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于P1894 [USACO4.2]完美的牛栏The Perfect Stall的主要内容,如果未能解决你的问题,请参考以下文章

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

洛谷P1894 [USACO4.2]完美的牛栏The Perfect Stall(二分图)

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

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

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

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