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)之间连一条边, ...
随机推荐
- 关于ebox
看了介绍,觉得挺不错的东西,希望能够一路走下去 老话题STM32编程,新思路,一样是编程,味道却大有不同.这就是STM32之eBox编程.让你提议不一样的编程,让开发快到你意想不 ...
- Together
- 【数论】二进制GCD
二进制GCD GCD这种通用的算法相信每个OLER都会 ,辗转相除,代码只有四行 : int GCD(int a,int b){ if(b==0) return a; return GCD(b ...
- 关于学习Knockoutjs--入门(一)
前段时间做项目一直在用knockout,虽然用着不怎么利索,但是知识是一点一点探索的. 首先介绍一下 Knockout是什么? 他是一个很优秀的js库,他最大的功能就是实现双向绑定,它可以帮助你仅使用 ...
- 设置程序集(dll)引用路径,整洁美观
static class Program { //设置引用程序集路径 static Program() { AppDomain.CurrentDomain.SetData("PRIVATE_ ...
- python核心编程学习记录之函数与函数式编程
@func function 意思是func(function) @func(a) function 意思是func(a)这是个函数对象,在去调用function函数 如果要传额外的值,只传值用*tu ...
- linux线程的实现【转】
转自:http://www.cnblogs.com/zhaoyl/p/3620204.html 首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个 ...
- TCP/IP学习-链路层
链路层: 路径MTU: 网络层: ifconfig netstat IP首部 网络字节序:大端字节序
- RAM与ROM
随着对计算机行业的深入了解,很多人开始听到一些RAM和ROM的讨论话题,之前我也不是很清楚,也不知道他和电脑的内存有什么联系.下面就让我们一起来学习一下这个吧. 首先RAM和ROM是什么 RAM和RO ...
- 获取gridpanel 中 checkbox的状态
最近一直在用extjs前天框架来写作项目,很少用到这个框架,过程中遇到很多麻烦, 可能就是一个小的问题会困扰你很长时间, example: 我做一个报表,要获取gridpanel中 checkbox的 ...