POJ-1422-Air Raid(二分图最小路径覆盖)
2013-02-27 19:44
423 查看
裸的最小路径覆盖
最小路径覆盖=顶点数-二分图最大匹配
最小路径覆盖=顶点数-二分图最大匹配
// File Name: 1422.cpp // Author: zlbing // Created Time: 2013/2/27 19:20:35 #include<iostream> #include<string> #include<algorithm> #include<cstdlib> #include<cstdio> #include<set> #include<map> #include<vector> #include<cstring> #include<stack> #include<cmath> #include<queue> using namespace std; #define CL(x,v); memset(x,v,sizeof(x)); #define INF 0x3f3f3f3f #define MAXN 150 vector<int>G[MAXN]; int Left[MAXN]; bool S[MAXN],T[MAXN]; int P,N; bool match(int i) { S[i]=true; for(int j=0;j<G[i].size();j++) { int v=G[i][j]; if(T[v])continue; T[v]=true; if(Left[v]==0||match(Left[v])) { Left[v]=i; return true; } } return false; } int main(){ int n,m; int N; scanf("%d",&N); while(N--) { scanf("%d%d",&n,&m); for(int i=0;i<=n;i++)G[i].clear(); int a,b; for(int i=0;i<m;i++) { scanf("%d%d",&a,&b); G[a].push_back(b); } CL(Left,0); int sum=0; for(int i=1;i<=n;i++) { CL(S,0); CL(T,0); if(match(i))sum++; } printf("%d\n",n-sum); } return 0; }
相关文章推荐
- 【二分图|最小路径覆盖】POJ-1422 Air Raid
- POJ1422——Air Raid(二分图,最小路径覆盖)
- POJ-1422-Air Raid (二分图 最小路径覆盖)
- poj 1422 Air Raid(最小路径覆盖 + 二分图最大匹配)
- POJ 1422 Air Raid - 最小路径覆盖(二分图)-易错题
- POJ 1422Air Raid(二分图最大匹配之最小路径覆盖)
- POJ 题目1422 Air Raid(二分图最小路径覆盖)
- POJ 1422-Air Raid(二分图_最小路径覆盖)
- POJ 1422 && ZOJ 1525 --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 Air Raid (最小路径覆盖)
- POJ 1422 Air Raid 最小路径覆盖
- POJ 1422 Air Raid (最小路径覆盖)
- POJ 1422 Air Raid(DAG最小路径覆盖)
- POJ1422-Air Raid(最小路径覆盖)
- poj 1422 Air Raid (最小路径覆盖白痴题)