hdu1151 Air Raid 二分匹配
2013-11-01 18:08
447 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151
求最小路径覆盖
二分图最小路径覆盖=点的个数-最大匹配。
代码:
求最小路径覆盖
二分图最小路径覆盖=点的个数-最大匹配。
代码:
#include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> using namespace std; #define maxn 125 int g[maxn][maxn]; int vis[maxn]; int cx[maxn]; int cy[maxn]; int n; int m; int ans; int path(int u) { vis[u]=1; for(int v=1;v<=n;v++) { if(vis[v]==0 && g[u][v]!=0) { vis[v]=1; if(cy[v]==-1 || path(cy[v])) { cx[u]=v; cy[v]=u; return 1; } } } return 0; } void MaxMatch() { memset(cx,-1,sizeof(cx)); memset(cy,-1,sizeof(cy)); for(int i=1;i<=n;i++) { if(cx[i]==-1) { memset(vis,0,sizeof(vis)); ans+=path(i); } } } int main() { int t; scanf("%d",&t); while(t--) { ans=0; scanf("%d",&n); scanf("%d",&m); memset(g,0,sizeof(g)); int s,e; for(int i=0;i<m;i++) { scanf("%d%d", &s,&e); g[s][e]=1; } MaxMatch(); cout<<n-ans<<endl; } return 0; }
相关文章推荐
- poj 1422 Air Raid (二分匹配)
- HDU1151_Air Raid(二分图/最小路径覆盖=n-最大匹配)
- POJ 1422 Air Raid (二分匹配)
- hdu 1151 Air Raid (二分匹配)
- Air Raid(二分匹配)
- poj 1422 Air Raid (二分匹配)
- hdu 1151 Air Raid (二分匹配)
- hdu 1151 Air Raid (二分匹配)
- poj1422 Air Raid 二分匹配之最小路径覆盖
- LightOJ 1403 - Air Raid【二分匹配】
- hdu 1151 Air Raid (二分匹配,最小路径覆盖)
- hdu 1151 Air Raid - 二分匹配
- POJ 1422Air Raid(二分图最大匹配之最小路径覆盖)
- POJ - 1422 Air Raid (最小路径覆盖 = 总点数 - 最大匹配)
- hdu1151 Air Raid,DAG图的最小路径覆盖
- 【HDU1151】【二分匹配】【最小路径覆盖】【建模】
- HDU1151 Air Raid
- zoj 1525 Air Raid 有向无环图的最小路径覆盖(匹配)
- HDU 1151 Air Raid(最小路径覆盖 = 顶点数 - 最大匹配数)
- POJ - 1422 Air Raid 二分图最大匹配