poj1422最小路径覆盖
2012-08-11 16:30
225 查看
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 505 // 实际问题时需要修改 int mat[MAXN][MAXN]; // 邻接矩阵mat 的0行0列不用 int nx, ny; // 实际问题时矩阵的行列数 int fy[MAXN], matx[MAXN], maty[MAXN]; int DFS( int u ) { int v; for (v=1;v<=ny;v++) if (mat[u][v] && fy[v]<0) { fy[v]=1; if (maty[v]<0 || DFS(maty[v])) { matx[u]=v; maty[v]=u; return 1; } } return 0; } int MaximumMatch( ) { int i, ret=0; memset(matx,-1,sizeof(matx)); memset(maty,-1,sizeof(maty)); for (i=1;i<=nx;i++) if (matx[i]<0) { memset(fy,-1,sizeof(fy)); ret+=DFS(i); } return ret; } int main() { int t,i,j,k,n,m,mm,x,y; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); nx=n;ny=n; memset(mat,0,sizeof(mat)); for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); mat[x][y]=1; } /*for(i=1;i<=n;i++){ for(j=1;j<=n;j++) cout<<mat[i][j]<<" "; cout<<endl; }*/ cout<<n-MaximumMatch( )<<endl; } //system("pause"); return 0; }
相关文章推荐
- HDU 1151 & POJ 1422 Air Raid【最小路径覆盖】
- poj 1422 - 最小路径覆盖
- (最小路径覆盖) poj 1422
- POJ 1422 二分图(最小路径覆盖)
- poj 1422 Air Raid(最小路径覆盖 + 二分图最大匹配)
- poj 1422 二分图最小路径覆盖
- poj 1422 Air Raid 最小路径覆盖 二分图匹配 解题报告
- POJ 1422 Air Raid(DAG最小路径覆盖)
- 二分图最小路径覆盖 POJ 1548、1422、2594、3216
- 最小路径覆盖问题poj2594&&poj1422(匈牙利解法)
- [POJ] 1422 Air Raid(最小路径覆盖)
- POJ 1422 Air Raid(DAG最小路径覆盖)
- POJ-1422-Air Raid-求最小路径覆盖(匈牙利算法)
- POJ 1422 Air Raid 最小路径覆盖(二分图匹配)
- POJ - 1422 Air Raid (最小路径覆盖 = 总点数 - 最大匹配)
- POJ 1422 Air Raid(DAG最小路径覆盖)
- 【二分图|最小路径覆盖】POJ-1422 Air Raid
- poj 1422 最小路径覆盖
- POJ 1422 DAG最小路径覆盖
- POJ-1422-Air Raid (二分图 最小路径覆盖)