![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分图
文章平均质量分 76
South__wind
ACMER
展开
-
poj 2400 Supervisor, Supervisee
有n个工人(老板),他们给自己想要的老板(工人)排名。求出所有最佳组合KM+DFS().求出来最小值后把所有可能搭配DFS一遍就可以得出满足要求的搭配了。#include#include#define inf 1000000#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))原创 2012-08-30 16:08:22 · 658 阅读 · 0 评论 -
poj 2195 Going Home
还是KM算法,求最小值的匹配,建图的时候,边都取反就可以转化成求最大值的匹配了。#include#include# define inf 1000000using namespace std;int m,n,x,y,ans;int map[101][101],visx[101],visy[101],ly[101],lx[101],link[101];char s原创 2012-08-30 16:13:24 · 352 阅读 · 0 评论 -
poj 3041 Asteroids
#include using namespace std;int link[510],n,m;bool map[510][510],hav[510];bool find(int x){ int y,k; for(y=1;y<=n;y++) if(hav[y] && map[x][y]){ hav[y]=false; k=link[y];link原创 2012-08-30 16:25:03 · 268 阅读 · 0 评论 -
poj 3686 The Windy's
一开始把图建错了。结果纠结到现在。本题需要拆点,把每台机器当成n台使用。由于每台机器之前加工的玩具无法确定,但是我们可以反过来想。假设当前这个玩具倒数第K加工,那么他和后面加工的玩具总共延误K*MAP[I][J],我们就可以根据这个来建图。然后套KM算法去做。#include#include#includeusing namespace std;#defin原创 2012-08-30 16:17:15 · 890 阅读 · 0 评论 -
hdu 1054 Strategic Game
匈牙利算法:#includeusing namespace std;int n,m,p,f,sum;int link[1600];int vis[1600];int map[1600][1600];int dfs(int g){ for(int i=1;i<=map[g][0];i++) { int j=map[g]原创 2012-08-31 01:22:14 · 336 阅读 · 0 评论 -
hdu 1151 Air Raid
#include#includeint map[121][121];int vis[121],link[121];int t,in,s,x,y,ans;int dfs(int i){ for(int j=1;j<=in;j++) { if(map[i][j]==1) { if(vis[j]==0)原创 2012-09-01 20:02:32 · 391 阅读 · 0 评论 -
hdu 3991 Harry Potter and the Present II
最小点覆盖:先用弗洛伊德算法把每两个城市的最短距离算出来,然后把分配的任务按时间排序,如果完成一个任务后,还可以在规定的时间内完成另一个任务,那么就在这两个任务编号之间连一条边,然后运行匈牙利算法,用任务总数减去得出来的数,当然要在减去1,他自己除外。#include#include#includeusing namespace std;struct node{原创 2012-09-01 21:20:02 · 413 阅读 · 0 评论 -
hdu 4160 Dolls
最小点集覆盖: 如果一个套娃能够放进另一个套娃里面则在它们之间建立一条边,运行一遍匈牙利算法,用总的套娃数减去用匈牙利得到的匹配数即的答案。#include#include#includeusing namespace std;int n;int map[510][510];struct node{ int w,l,h;}a[510];i原创 2012-09-02 01:47:25 · 794 阅读 · 1 评论 -
poj 1466 Girls and Boys
很裸的匈牙利算法。#include#include//const int l=501;int mark[500],link[500],map[500][500];int n,count,num,k,tot;char c;bool dfs(int i){ //cout<<121<<endl; for(int j=0;j<n;j++)原创 2012-08-27 20:20:10 · 282 阅读 · 0 评论