zoj1002——Fire Net
2010-09-18 17:59
309 查看
最大顶点覆盖数!
#include<stdio.h> #include<string.h> #define max 20 char g[max][max]; int gra[max*max][max*max],cx[max*max][max*max]; int cy[max*max][max*max],vis[max*max],my[max*max]; int n,nx,ny; bool find(int v) { int i; for(i=1;i<=ny;i++) { if(gra[v][i]&&vis[i]==0) { vis[i]=1; if(my[i]==0||find(my[i])) { my[i]=v; return true; } } } return false; } void solve() { int i,j; int ans=0; memset(my,0,sizeof(my)); for(i=1;i<=nx;i++) { memset(vis,0,sizeof(vis)); if(find(i)) ans++; } printf("%d/n",ans); } int main() { int i,j; while(scanf("%d",&n)&&n) { getchar(); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) scanf("%c",&g[i][j]); getchar(); } nx=0;ny=0; for(i=1;i<=n;i++) { j=1; while(j<=n) { if(g[i][j]=='.') { nx++; while(j<=n&&g[i][j]=='.') { cx[i][j]=nx; j++; } } else j++; } } for(j=1;j<=n;j++) { i=1; while(i<=n) { if(g[i][j]=='.') { ny++; while(i<=n&&g[i][j]=='.') { cy[i][j]=ny; i++; } } else i++; } } memset(gra,0,sizeof(gra)); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(g[i][j]=='.') gra[cx[i][j]][cy[i][j]]=1; solve(); } return 0; }
相关文章推荐
- 杭电1045(zoj1002)Fire Net
- HDU1045 ZOJ1002 Fire Net
- ZOJ-1002-Fire Net
- ZOJ1002 Fire Net(非递归版)
- ZOJ 1002 Fire Net(DFS)
- [DFS]zoj1002 Fire Net
- zoj 1002 Fire Net(DFS~ 哈哈哈哈,终于过了!!!)
- zoj1002 Fire Net
- zoj 1002 Fire Net(不能位于同行或同列,问最多放几个)
- ZOJ 1002 Fire Net(DFS啊 )
- HDU 1045&ZOJ 1002 Fire Net (还是DFS呀...)
- ZOJ 1002 Fire Net(搜索)
- ZOJ Problem Set - 1002 Fire Net (Python)
- zoj 1002 Fire Net
- ZOJ(ZJU) 1002 Fire Net(深搜)
- zoj 1002 Fire Net (二分匹配)
- fire net(zoj1002)
- hdu 1045 || zoj 1002 Fire Net(搜索:DFS+水题)
- hdu 1045 && zoj 1002 Fire Net(DFS && 二分图匹配)
- ZOJ1002 FIRE NET