poj2226 Muddy Fields
来源:互联网 发布:做淘宝最少得多钱 编辑:程序博客网 时间:2024/05/17 01:05
这题也是一道经典的最小点覆盖问题,但是注意本题中不是整行整列地消除,而是消除连续的格子,因此先把连续的格子当成一个整体标号,然后当行列相交时连边。
varr,c,nx,ny:longint;s:array[1..50]of string;g,tx,ty:array[1..3000,1..3000]of longint;match,t:array[1..3000]of longint;h:array[1..3000]of boolean;procedure init;var i,j:longint;beginnx:=0;ny:=0;readln(r,c);for i:=1 to r do readln(s[i]);for i:=1 to r dobeginj:=1;while(j<=c)dobeginif(s[i,j]='*')thenbegininc(nx);while(j<=c)and(s[i,j]='*')dobegintx[i,j]:=nx;inc(j);end;dec(j)end;inc(j);end;end;for j:=1 to c dobegini:=1;while(i<=r)dobeginif(s[i,j]='*')thenbegininc(ny);while(i<=r)and(s[i,j]='*')dobeginty[i,j]:=ny;inc(i);end;dec(i);end;inc(i);end;end;for i:=1 to r dofor j:=1 to c dobeginif(s[i,j]='*')thenbegininc(t[tx[i][j]]);g[tx[i][j],t[tx[i][j]]]:=ty[i][j];end;end;end;function check(k:longint):boolean;var i:longint;beginfor i:=1 to t[k] doif(not h[g[k,i]])thenbeginh[g[k,i]]:=true;if(match[g[k,i]]=0)or(check(match[g[k,i]]))thenbeginmatch[g[k,i]]:=k;exit(true);end;end;exit(false);end;procedure hungarian;var i,ans:longint;beginans:=0;for i:=1 to nx dobeginfillchar(h,sizeof(h),0);if(check(i))then inc(ans);end;writeln(ans);end;begininit;hungarian;end.
- POJ2226 Muddy Fields
- poj2226 - Muddy Fields
- POJ2226 Muddy Fields
- poj2226 Muddy Fields
- poj2226 Muddy Fields
- poj2226 Muddy Fields
- POJ2226 Muddy Fields
- POJ2226 Muddy Fields
- poj2226 muddy fields
- 【poj2226】 Muddy Fields
- poj2226——Muddy Fields
- 【poj2226】Muddy Fields 二分图
- 最小点覆盖 poj2226 Muddy Fields
- POJ2226:Muddy Fields(二分图)
- POJ2226 Muddy Fields——最小点覆盖问题
- POJ2226 Muddy Fields【二分图最小点覆盖】
- POJ2226 Muddy Fields 二分图求最小覆盖点
- poj 2226 Muddy Fields
- 输入法词库 转txt 工具 一个开源项目
- 数据结构(c语言版)总结
- 6、实现通用分页功能二(实现通用分页查询的业务方法)
- 研究生了,你会查文献吗?
- java.lang.IllegalStateException: get field slot from row 0 col -1 failed
- poj2226 Muddy Fields
- 黑马程序员-JAVA基础-正则表达式
- IT类实习/工作习惯心得
- 让Ubuntu和Android同时运行(Ubuntu on Android)zz
- sql 语句 去重
- Python文件夹与文件的操作
- 寻找数组中最大值和最小值—分治算法
- 在X64 RedHat5 或者 RedHat4 下编译安装PHP出现的各种问题及解决
- TCP-UDP Socket