博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj1741]穿越小行星群
阅读量:4991 次
发布时间:2019-06-12

本文共 1022 字,大约阅读时间需要 3 分钟。

将每一行/每一列作为一个点,对于一个障碍(x,y),要么第x行和第y列的状态(是否攻击)只需要有一个就可以了,将第x行和第y列连边,就是二分图的最小点覆盖=最大匹配数。

1 #include
2 using namespace std; 3 #define N 1005 4 struct ji{ 5 int nex,to; 6 }edge[N*20]; 7 int E,n,m,x,y,ans,head[N],flag[N],vis[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 int 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 ((!flag[v])||(dfs(flag[v]))){19 flag[v]=k;20 flag[k]=v;21 return 1;22 }23 }24 return 0;25 }26 int main(){27 scanf("%d%d",&n,&m);28 memset(head,-1,sizeof(head));29 for(int i=1;i<=m;i++){30 scanf("%d%d",&x,&y);31 add(x,y+n);32 add(y+n,x);33 }34 for(int i=1;i<=n;i++){35 memset(vis,0,sizeof(vis));36 if (!flag[i])ans+=dfs(i);37 }38 printf("%d",ans);39 }
View Code

 

转载于:https://www.cnblogs.com/PYWBKTDA/p/11249621.html

你可能感兴趣的文章
随笔:技术流可以这样写博客
查看>>
[优化]JavaScript 格式化带有占位符字符串
查看>>
打JAR包
查看>>
大图轮播
查看>>
UNIX环境高级编程读书笔记
查看>>
java awt 乱码问题
查看>>
矩阵中的路径
查看>>
unity回调函数范例
查看>>
linux下给php安装curl、gd(ubuntu)
查看>>
Java自带的Logger使用-代码摘要
查看>>
Java设计模式系列 — 构造器模式
查看>>
MySQL执行计划explain的key_len解析
查看>>
Windows Phone开发(9):关于页面状态 转:http://blog.csdn.net/tcjiaan/article/details/7292160...
查看>>
android 通过数组,流播放声音的方法
查看>>
Spring入门篇
查看>>
JAVA遇见HTML——JSP篇(JSP状态管理)
查看>>
启动eclipse出现错误Java was started but returned exit =一个数字
查看>>
myBatis模糊查找
查看>>
数据结构与算法之五 链接列表
查看>>
java 对象数组
查看>>