码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj1191]超级英雄

时间:2019-11-09 14:04:09      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:eof   bzoj   图片   二分图   head   memset   scan   for   name   

将问题和锦囊二分图匹配即可,注意当某一个不合法就要退出

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define N 2005
 4 struct ji{
 5     int nex,to;
 6 }edge[N];
 7 int E,n,m,x,y,ans,vis[N],head[N],mat[N];
 8 void add(int x,int y){
 9     edge[E].nex=head[x];
10     edge[E].to=y;
11     head[x]=E++;
12 }
13 bool dfs(int k){
14     if (vis[k])return 0;
15     vis[k]=1;
16     for(int i=head[k];i!=-1;i=edge[i].nex){
17         int v=edge[i].to;
18         if ((!mat[v])||(dfs(mat[v]))){
19             mat[v]=k;
20             return 1;
21         }
22     }
23     return 0;
24 }
25 int main(){
26     scanf("%d%d",&n,&m);
27     memset(head,-1,sizeof(head));
28     for(int i=1;i<=m;i++){
29         scanf("%d%d",&x,&y);
30         add(i,x+m+1);
31         add(i,y+m+1);
32     }
33     for(int i=1;i<=m+1;i++){
34         memset(vis,0,sizeof(vis));
35         if (!dfs(i)){
36             printf("%d",i-1);
37             return 0;
38         }
39     }
40     printf("%d",m);
41 }
View Code

 

[bzoj1191]超级英雄

标签:eof   bzoj   图片   二分图   head   memset   scan   for   name   

原文地址:https://www.cnblogs.com/PYWBKTDA/p/11824951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!