hdu 1151 Air Raid 匹配
来源:互联网 发布:acrobat for mac安装 编辑:程序博客网 时间:2024/06/05 07:29
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;const int MAXN=601*601+10;const int MAXM=601*601*2;struct Edge{ int to,next;} edge[MAXM];int head[MAXN],tot,mx[MAXN],cx[MAXN],cy[MAXN],mk[MAXN];void addedge(int from,int to){ edge[tot].to=to; edge[tot].next=head[from]; head[from]=tot++;}void init(){ memset(head,0xff,sizeof(head)); tot=0;}int dfs(int u){ for(int i=head[u]; i!=-1; i=edge[i].next) { int v=edge[i].to; if(!mk[v]) { mk[v]=1; if(cy[v]==-1||dfs(cy[v])) { cx[u]=v; cy[v]=u; return 1; } } } return 0;}int Maxmatch(int n){ int res=0; memset(cx,0xff,sizeof(cx)); memset(cy,0xff,sizeof(cy)); for(int i=1; i<=n; i++) { if(cx[i]==-1) { memset(mk,0,sizeof(mk)); res+=dfs(i); } } return res;}int main(){ int _,n,m,i,j,u,v; scanf("%d",&_); while(_--) { init(); scanf("%d",&n); scanf("%d",&m); for(i=0; i<m; i++) { scanf("%d%d",&u,&v); addedge(u,v); } printf("%d\n",n-Maxmatch(n)); } return 0;}
0 0
- hdu 1151 Air Raid 匹配
- hdu 1151 Air Raid (二分匹配)
- hdu 1151 Air Raid 二分图匹配
- hdu 1151 Air Raid (二分匹配)
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- HDU 1151 Air Raid
- HDU 1151Air Raid
- Hdu 1151 - Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- HDU 1151 Air Raid
- HDU 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid
- hdu 1151 Air Raid 最小路径覆盖(最大匹配)
- Java 根据某个文件名,获取相对应的文件夹,然后取文件夹中所有文件
- NSCharacterSet截取字符串
- [Leetcode]Flatten Binary Tree to Linked List~
- 基础总结篇之四:Service完全解析
- 【黑马程序员】多线程,设计模式——Java复习笔记
- hdu 1151 Air Raid 匹配
- Linux查看设置系统时区
- Android多点触摸交互处理
- ubuntu14.04 安装opencv3.0.0 教程
- vSphere搭建虚拟化集群环境:一 vSphere主要虚拟化产品简介
- javaWEB之-----------简单的相册管理
- LRU缓存实现(Java)
- UVa 11988 ------ Broken Keyboard
- Linux-Python学习记录