poj 1422Air Raid--最小路径覆盖
2012-08-03 15:59
495 查看
/* 题意:有个城镇,所有路都是单行道,并且没有环,所有路都连接在十字路口上 现在用最少的伞兵走完这些式子路口,每个只能走一遍 很明显的最小路径覆盖 最小路径覆盖=点数-最大匹配 需要拆点 所有式子路口 在X中一个 在Y中一个 路把两个集合中十字路口连接起来 求最大匹配 还是匈牙利 */ #include<stdio.h> #include<vector> using namespace std; vector<int>v[150]; int t,n,m; int match[150],vis[150];//都只是对Y集中的点 int dfs(int i) { for(int j=0;j<v[i].size();++j) { if(!vis[v[i][j]]) { vis[v[i][j]]=1; if(match[v[i][j]]==-1||dfs(match[v[i][j]])) { match[v[i][j]]=i; return 1; } } } return 0; } int main() { int i,a,b; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<=n;i++) v[i].clear(); for(i=1;i<=m;++i) { scanf("%d%d",&a,&b); v[a].push_back(b); } a=0;//// memset(match,-1,sizeof(match)); for(i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) a++; }//// printf("%d\n",n-a);//最小路径覆盖=点数-最大匹配 } return 0; }
相关文章推荐
- poj 1422 Air Raid 最小路径覆盖
- POJ 1422 Air Raid(DAG最小路径覆盖)
- poj 1422 Air Raid (最小路径覆盖)
- POJ 1422 Air Raid 最小路径覆盖 构图!
- [POJ] 1422 Air Raid(最小路径覆盖)
- HDU 1151 & POJ 1422 Air Raid【最小路径覆盖】
- POJ-1422-Air Raid-求最小路径覆盖(匈牙利算法)
- 【二分图|最小路径覆盖】POJ-1422 Air Raid
- POJ 1422 && HDU 1151 Air Raid(最小路径覆盖-hungary)
- POJ 1422 Air Raid(DAG最小路径覆盖)
- 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(二分图匹配最小路径覆盖)
- POJ1422-Air Raid(最小路径覆盖)
- POJ-1422-Air Raid (二分图 最小路径覆盖)
- POJ 1422 Air Raid (最小路径覆盖)