【图论】【二分图匹配】[POJ 3041]Asteroids
来源:互联网 发布:儿童英语配音软件 编辑:程序博客网 时间:2024/05/16 01:25
首先这道题目可以发现我们可以发现如果集合
#include <cstdio>#include <cstring>#include <algorithm>//#include <conio.h>using namespace std;const int MAXN = 1000;bool vis[MAXN+10];int con[MAXN+10];int endcnt;int n, m;struct node{ int v; node *next;}Edges[10000*2+10], *adj[MAXN+10], *ecnt=Edges;void addedge(int u, int v){ ++ecnt; ecnt->v = v; ecnt->next = adj[u]; adj[u] = ecnt;}bool dfs(int u){ for(node *p=adj[u];p;p=p->next){ if(!vis[p->v]){ vis[p->v] = true; if(con[p->v]==-1 || dfs(con[p->v])){ con[u] = p->v; con[p->v] = u; return true; } } } return false;}int work(){ int ret = 0; memset(con, -1, sizeof con); for(int i=1;i<=endcnt;i++) if(con[i] == -1){ memset(vis, 0, sizeof vis); ret += dfs(i); } return ret;}void read(){ int t1, t2; scanf("%d%d", &n, &m); for(int i=0;i<m;i++){ scanf("%d%d", &t1, &t2); addedge(t1, t2+n); addedge(t2+n, t1); } endcnt=n;}int main(){ int T=1; while(T--){ read(); printf("%d\n", work()); memset(adj, 0, sizeof adj); ecnt=Edges; } return 0;}
0 0
- 【图论】【二分图匹配】[POJ 3041]Asteroids
- Asteroids(poj 3041,二分图最大匹配)
- poj 3041 Asteroids 二分图匹配
- poj 3041 Asteroids (二分图匹配)
- POJ 3041 - Asteroids(二分图匹配)
- [二分图最大匹配] poj 3041 Asteroids
- [POJ 3041]Asteroids[二分图匹配]
- POJ 3041 Asteroids (二分图最大匹配)
- poj 3041 Asteroids 二分图最大匹配
- POJ 3041-Asteroids(二分图匹配)
- POJ 3041 Asteroids 二分图最大匹配
- POJ 3041 Asteroids(二分图匹配)
- POJ - 3041 Asteroids 【二分图匹配】
- POJ 3041 Asteroids(二分图匹配)
- poj 3041 Asteroids 二分图匹配
- POJ 3041 Asteroids 二分图最大匹配
- POJ 3041 Asteroids 二分匹配
- 【POJ】3041 Asteroids 二分匹配
- Unity NGUI灰化Shader
- HDU 1014 Uniform Generator
- adb 查看WIFI密码
- android - 自定义(组合)控件 + 自定义控件外观
- easyui 改变下拉框高度
- 【图论】【二分图匹配】[POJ 3041]Asteroids
- 黑马程序员--静态,接口,内部类,抽象类
- pointless comparison of unsigned integer with zero
- 在多文档程序中,好像各种类都可以响应ON_COMMAND(ID_FILE_NEW, OnFileNew)类似的菜单响应。 那有没有什么样的原则?到底这些响应放到哪些类中比较合适? 比如有些菜单响应
- Hadoop入门进阶课程1--Hadoop1.X伪分布式安装
- 前端开发常见的面试问题
- 我们是这样理解语言的
- 构造函数、复制构造函数、类型转换构造函数、析构函数
- CASE WHEN THEN的使用方法