POJ 3041 Asteroids 匈牙利算法,最大流解法,行列为点 难度:1
http://poj.org/problem?id=3041
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
int e[1004][1004];
bool vis[1004];
vector <int > G[1004];
int n,m;
int dfs(int s){
vis[s]=true;
if(s==n*2+1){//printf("dfs ok %d\n",s);
return 1;}
for(int i=0;i<G[s].size();i++){
int t=G[s][i];
if(!vis[t]&&e[s][t]>0){
if(dfs(t)>0){
e[s][t]-=1;
e[t][s]+=1;
//printf("dfs ok %d\n",s);
return 1;
}
}
}
// printf("dfs failed %d\n",s);
return 0;
}
void printe(){
for(int i=0;i<=2*n+1;i++){
for(int j=0;j<=2*n+1;j++){
if(e[i][j])printf("e[%d][%d]%d ",i,j,e[i][j]);
}
printf("\n");
}
printf("\n");
}
int maxflow(){
//printe();
int ans=0,f;
while(1){
f=dfs(0);
//printe();
memset(vis,0,sizeof(vis));
if(f==0)return ans;
ans+=f;
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){e[0][i]=1;e[i][0]=0;G[0].push_back(i);}
for(int i=n+1;i<=2*n;i++){e[i][2*n+1]=1;e[2*n+1][i]=0;G[i].push_back(2*n+1);}
for(int i=0;i<m;i++){
int f,t;
scanf("%d%d",&f,&t);
e[f][n+t]=1;
e[n+t][f]=0;
G[f].push_back(n+t);
G[n+t].push_back(f);
}
int ans=maxflow();
printf("%d\n",ans);
return 0;
}
POJ 3041 Asteroids 匈牙利算法,最大流解法,行列为点 难度:1的更多相关文章
- POJ 3041 Asteroids | 匈牙利算法模板
emmmmm 让你敲个匈牙利 #include<cstdio> #include<algorithm> #include<cstring> #define N 51 ...
- POJ 3041.Asteroids-Hungary(匈牙利算法)
Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 23963 Accepted: 12989 Descr ...
- POJ 3020 Antenna Placement 匈牙利算法,最大流解法 难度:1
http://poj.org/problem?id=3020 #include <cstdio> #include <cstring> #include <vector& ...
- 二分图最大匹配(匈牙利算法) POJ 3041 Asteroids
题目传送门 /* 题意:每次能消灭一行或一列的障碍物,要求最少的次数. 匈牙利算法:把行和列看做两个集合,当有障碍物连接时连一条边,问题转换为最小点覆盖数==二分图最大匹配数 趣味入门:http:// ...
- POJ 3041 Asteroids / UESTC 253 Asteroids(二分图最大匹配,最小点匹配)
POJ 3041 Asteroids / UESTC 253 Asteroids(二分图最大匹配,最小点匹配) Description Bessie wants to navigate her spa ...
- POJ 3041 Asteroids (对偶性,二分图匹配)
题目:POJ 3041 Asteroids http://poj.org/problem?id=3041 分析: 把位置下标看出一条边,这显然是一个二分图最小顶点覆盖的问题,Hungary就好. 挑战 ...
- poj 3041——Asteroids
poj 3041——Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22604 Accep ...
- poj - 3041 Asteroids (二分图最大匹配+匈牙利算法)
http://poj.org/problem?id=3041 在n*n的网格中有K颗小行星,小行星i的位置是(Ri,Ci),现在有一个强有力的武器能够用一发光速将一整行或一整列的小行星轰为灰烬,想要利 ...
- POJ 3041 Asteroids(二分图 && 匈牙利算法 && 最小点覆盖)
嗯... 题目链接:http://poj.org/problem?id=3041 这道题的思想比较奇特: 把x坐标.y坐标分别看成是二分图两边的点,如果(x,y)上有行星,则将(x,y)之间连一条边, ...
随机推荐
- 商人过河问题(DFS)
问题描述:3个商人带着3个仆人过河,过河的工具只有一艘小船,只能同时载两个人过河,包括划船的人.在河的任何一边,只要仆人的数量超过商人的数量,仆人就会联合起来将商人杀死并抢夺其财物,问商人应如何设计过 ...
- magento app开发遇到的问题及解决
今天一直在解决Magento的APP接口调用数据异常的问题,调用/api/rest/category/:id 这个接口的时候,返回的所有目录的数据是一样的,原始代码是这样的. 1)请求地址 /api/ ...
- jenkins解决jenkins内存溢出问题
在jenkins master-slave配置中,总是出现内存溢出问题,更换了机器设备仍然跑不起来: 问题如下: Status Code: 500 Exception: org.apache.comm ...
- Session与cookie的区别?
1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据. 2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间. ...
- Orcale与jfinal的添加时间问题
时间只能不能使用一般的方法进行添加,必须转换,比如添加当前时间,如上图所示
- runoob
今天学习bootstrap的时候偶然发现http://www.runoob.com/ 这个网站不错,比w3cschool界面要好看,内容要丰富 比较适合新手学习,而且上面的内容比较丰富,不错.
- find函数
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1. ...
- Android跨进程通信的四种方式
由于android系统中应用程序之间不能共享内存.因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些.在android SDK中提供了4种用于跨进程通讯的方式.这4种方式正好对应于andro ...
- loadrunner目录分析
analysis templates——分析模板 可以制定自己的模板保存到analysis templates下 bin——可执行程序 注意里面的chm帮助文档,有c语言的函数帮助文档 bincert ...
- PHP-----函数和二进制
递归-----函数本身调用本身.每一个栈中的变量都是独立的,不受外部变量的影响,除非传参.这一点和Js不一样. 在一个php页面中要引用其他的php文件可以使用require,require_once ...