hdu4185 Oil Skimming(偶匹配)
<span style="font-family: Arial; font-size: 14.3999996185303px; line-height: 26px;">//题意,在一个N*N的矩阵里寻找最多有多少个</span><span style="font-size: 14px; line-height: 26px; font-family: 'Courier New', Courier, monospace; white-space: pre;">“</span><span style="font-size: 14px; line-height: 26px; font-family: 'Courier New', Courier, monospace; white-space: pre;">##”(横着竖着都行)。 </span>
# include <stdio.h>
# include <algorithm>
# include <string.h>
using namespace std;
int n,cot;
int map[660],vis[660],pp[660][660],u[660][660];
int bfs(int x)
{
for(int i=1;i<=cot;i++)
{
if(!vis[i]&&pp[x][i])
{
vis[i]=1;
if(!map[i]||bfs(map[i]))
{
map[i]=x;
return 1;
}
}
}
return 0;
}
void judge(int x,int y)
{
if(x<n-1&&u[x+1][y])
pp[u[x][y]][u[x+1][y]]=pp[u[x+1][y]][u[x][y]]=1;//相连的“#”标记
if(y<n-1&&u[x][y+1])
pp[u[x][y]][u[x][y+1]]=pp[u[x][y+1]][u[x][y]]=1;
}
int main()
{
int t,cas,i,j;
char a[660][660];
while(~scanf("%d",&t))
{
cas=0;
while(t--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",a[i]);
memset(u,0,sizeof(u));
cot=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]=='#')
u[i][j]=++cot;//为“#”标记
}
}
memset(pp,0,sizeof(pp));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(u[i][j])
{
judge(i,j);
}
}
}
int res=0;
memset(map,0,sizeof(map));
for(i=1;i<=cot;i++)//一共1到cot个油田
{
memset(vis,0,sizeof(vis));
if(bfs(i))
res++;
}
printf("Case %d: %d\n",++cas,res/2);
}
}
return 0;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
hdu4185 Oil Skimming(偶匹配)的更多相关文章
- HDU4185 Oil Skimming 二分图匹配 匈牙利算法
原文链接http://www.cnblogs.com/zhouzhendong/p/8231146.html 题目传送门 - HDU4185 题意概括 每次恰好覆盖相邻的两个#,不能重复,求最大覆盖次 ...
- 匈牙利算法求最大匹配(HDU-4185 Oil Skimming)
如下图:要求最多可以凑成多少对对象 大佬博客: https://blog.csdn.net/cillyb/article/details/55511666 https://blog.csdn.net/ ...
- HDU4185 Oil Skimming —— 最大匹配
题目链接:https://vjudge.net/problem/HDU-4185 Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memo ...
- Hdu4185 Oil Skimming
Oil Skimming Problem Description Thanks to a certain "green" resources company, there is a ...
- hdu 4185 Oil Skimming(二分图匹配 经典建图+匈牙利模板)
Problem Description Thanks to a certain "green" resources company, there is a new profitab ...
- Oil Skimming HDU - 4185(匹配板题)
Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU4185:Oil Skimming(二分图最大匹配)
Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- H - Oil Skimming (挖石油)
题意大概是,海上漂浮着一些符号为#的石油,你要去搜集他们,但是你的勺子呢能且只能挖到两个单元的石油.问你最多能挖多少勺.注意 不能挖到纯净的海水,不然石油会被纯净的海水稀释的. 二分匹配,计算出里边有 ...
- J - Oil Skimming 二分图的最大匹配
Description Thanks to a certain "green" resources company, there is a new profitable indus ...
随机推荐
- shell 脚本之if、for、while语句
(1)if语句 root@ubuntu:/mnt/shared/shellbox/shellif# cat shellif.sh #!/bin/bash #推断字符串 if [ "$1&qu ...
- CentOS修改yum更新源
1. 在修改前先备份该文件 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2. 修改更新源配置文 ...
- java 字符串 asc 加密解密
package com; public class MD5Test { /** * @param args */ public static void main(String[] args) { Sy ...
- adt-bundle-windows-x86_32-20140702
adt-bundle-windows-x86_32-20140702 Windows > Preference,在Android里没有NDK选项 法一:help->install new ...
- iOS 通讯录-获取联系人属性
内容均来自关东升老师的ios开发指南 上一篇写了联系人框架的一些必须知道的知识 如今写一下读取联系人数据相关操作 要读取通讯录数据库 须要 创建通讯录对象 查询获取数据(全部或者部分) 获取通讯录某一 ...
- Windows Phone开发(9):关于页面状态
原文:Windows Phone开发(9):关于页面状态 按照一般做法,刚学会如何导航,还是不够的,因为要知道,手机里面的每个页面,就如同Web页面一样,是无状态的. 啥是无状态?如果我们玩过Web开 ...
- ES6箭头函数和它的作用域
原文来自我的前端博客: http://www.hacke2.cn/arrow-functions-and-their-scope/ http://es6rocks.com/2014/10/arrow- ...
- UNIX环境高级编程——Linux进程地址空间和虚拟内存
一.虚拟内存 分段机制:即分成代码段,数据段,堆栈段.每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低特权级(用户),每当程序试图访问(权限又分为可读.可写和可执行)一个 ...
- 懒人模式Singleton模式Meyers版本号
直接看代码: /* Singleton模式保证:在一个程序,,一个类有且只有一个实例.并提供一个访问 它的全局访问点 在编程其中.很多情况下,需要确保有一类的一个实例 比如: windopws系统中仅 ...
- android学习七(创建自己定义控件)
前面学习的是android的基本控件和布局的使用,可是主要的控件和布局有时候并不能实现复杂的布局.我们来看下各种控件和布局的关系. 可见全部的控件都是直接或者间接的继承自View的,全部的布局都是直接 ...