POJ 1422 Air Raid
2010-11-04 21:07
302 查看
匈牙利算法求最小路径覆盖:在一个有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);解决此类问题可以建立一个二分图模型。把所有顶点i拆成两个:X结点集中的i和Y结点集中的i',如果有边i->j,则在二分图中引入边i->j',设二分图最大匹配为m,则结果就是n-m
代码:
代码:
#include<iostream> using namespace std; int g[150][150],u[150],link[150]; int n; int dfs(int t) { int i; for(i=1;i<=n;i++) { if(g[t][i]&&!u[i]) { u[i]=1; if(link[i]==-1||dfs(link[i])) { link[i]=t; return 1; } } } return 0; } int hungary() { int i,num=0; memset(link,-1,sizeof(link)); for(i=1;i<=n;i++) { memset(u,0,sizeof(u)); { if(dfs(i)) num++; } } return num; } int main() { int i,j,a,b,k,test; cin>>test; while(test--) { memset(g,0,sizeof(g)); scanf("%d %d",&n,&k); for(i=1;i<=k;i++) { scanf("%d%d",&a,&b); g[a][b]=1; } printf("%d/n",n-hungary()); } return 0; }
相关文章推荐
- POJ1422——Air Raid(二分图,最小路径覆盖)
- 【图论】【二分图匹配】[POJ 1422]Air Raid
- 【二分图|最小路径覆盖】POJ-1422 Air Raid
- POJ 题目1422 Air Raid(二分图最小路径覆盖)
- poj 1422 Air Raid (二分图+有向图最小不相交路径覆盖)
- POJ 1422 Air Raid
- poj 1422 Air Raid 最小路径覆盖 二分图匹配 解题报告
- POJ 1422 Air Raid 最小路径覆盖
- POJ - 1422 Air Raid (最小路径覆盖 = 总点数 - 最大匹配)
- poj 1422 Air Raid
- POJ 1422 Air Raid (二分匹配)
- POJ-1422-Air Raid(二分图最小路径覆盖)
- POJ1422 Air Raid
- poj 1422 Air Raid (最小路径覆盖 )
- POJ 1422 Air Raid 及 关于匈牙利算法的理解的小比喻
- POJ 1422 Air Raid
- POJ 1422 Air Raid 最小覆盖点
- poj 1422 Air Raid (二分图匹配)
- [POJ]1422-Air Raid(最小路径覆盖)
- poj 1422 Air Raid(最小路径覆盖)