HDU 4185 Oil Skimming
题目大意:在一个N*N的矩阵里寻找最多有多少个“##”(横着竖着都行)。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
#define INF 0x3fffffff
#define maxn 605
int n, OilNum, k;///重构图之后顶点的个数 OilNum
int Head[maxn];
int maps[maxn][maxn], P[maxn];
bool vis[maxn];
struct Node
{
int e, next;
}edge[maxn];
void AddEdge(int s,int e)
{
edge[k].next = Head[s];
edge[k].e = e;
Head[s] = k ++;
} bool Find(int u)
{
for(int i=Head[u]; i != -; i = edge[i].next)
{
int v = edge[i].e;
if(!vis[v])
{
vis[v] = true;
if(P[v] == - || Find(P[v]))
{
P[v] = u;
return true;
}
}
}
return false;
} int solve()
{
int ans = ;
memset(P, -, sizeof(P));
for(int i=; i<=OilNum; i++)
{
memset(vis, false, sizeof(vis));
if(Find(i))
ans ++;
}
return ans / ;
} int main()
{
int T, cas = ;
char str[maxn];
scanf("%d", &T);
while(T--)
{
scanf("%d", &n); k = OilNum = ;
memset(Head, -, sizeof(Head));
memset(maps, , sizeof(maps)); for(int i=; i<n; i++)///读入图,并且重新标记
{
scanf("%s", str);
for(int j=; j<n; j++)
{
if(str[j] == '.')
maps[i+][j+] = ;
if(str[j] == '#')
maps[i+][j+] = ++OilNum;
}
} for(int i=; i<=n; i++)///重新构图
{
for(int j=; j<=n; j++)
{
if(maps[i][j])
{
if(maps[i-][j])
AddEdge(maps[i][j], maps[i-][j]);
if(maps[i+][j])
AddEdge(maps[i][j], maps[i+][j]);
if(maps[i][j-])
AddEdge(maps[i][j], maps[i][j-]);
if(maps[i][j+])
AddEdge(maps[i][j], maps[i][j+]);
}
}
} printf("Case %d: %d\n", cas ++,solve()); }
return ;
} /*
3
1 0 1
1 0 1
0 1 0
*/
HDU 4185 Oil Skimming的更多相关文章
- HDU 4185 ——Oil Skimming——————【最大匹配、方格的奇偶性建图】
Oil Skimming Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- hdu 4185 Oil Skimming(二分图匹配 经典建图+匈牙利模板)
Problem Description Thanks to a certain "green" resources company, there is a new profitab ...
- HDU 4185 Oil Skimming 【最大匹配】
<题目链接> 题目大意: 给你一张图,图中有 '*' , '.' 两点,现在每次覆盖相邻的两个 '#' ,问最多能够覆盖几次. 解题分析: 无向图二分匹配的模板题,每个'#'点与周围四个方 ...
- 4185 Oil Skimming 最大匹配 奇偶建图
题目大意: 统计相邻(上下左右)的‘#’的对数. 解法: 与题目hdu1507 Uncle Tom's Inherited Land*类似,需要用奇偶建图.就是行+列为奇数的作为X集合,偶尔作为Y集合 ...
- 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 ...
- HDU 1241 Oil Deposits --- 入门DFS
HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...
- hdu 1241 Oil Deposits(DFS求连通块)
HDU 1241 Oil Deposits L -DFS Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & ...
- HDU 1241 Oil Deposits(石油储藏)
HDU 1241 Oil Deposits(石油储藏) 00 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Probl ...
随机推荐
- 关于String的hashCode
String str=new String("abc"); String str2="abc"; System.out.println(str.hashCode ...
- HTML5 Media事件
Media 事件 由媒介(比如视频.图像和音频)触发的事件(适用于所有 HTML 元素,但常见于媒介元素中,比如 <audio>.<embed>.<img>.< ...
- 实现多个ContentProvider对多张表进行操作
http://blog.csdn.net/maylian7700/article/details/7365373 SQLite数据库直接操作类: DatabaseHelper.java package ...
- ip接口调用
<?php header("Content-type: text/html; charset=utf-8"); function getIP(){ if (isset($_S ...
- WPF里面的常用笔刷
程序运行效果 <Window x:Class="This_brush.MainWindow" xmlns="http://schemas.microsoft.com ...
- Pomelo实现最简单的通信-egret。
昨天因为需要开始学习Pomelo 做H5游戏的服务端. 因为个人学习习惯,我从来不适合去跟着文档看.一般我直接是看下大概的API,但是Pomelo的API全部都是英文的. 昨天我就告诉自己用一下午时间 ...
- String 方法
import java.lang.*; /** * 1.查找"asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd" * 该字符串中 ...
- corejava-chap01
<java是什么:>Programming language 程序语言Development environment 开发环境Application environment 应用环境Dep ...
- webservice拦截器 查看消息包(soap)
服务端: 1.获取EndpointImpl对象 2.调用EndpointImpl对象中的方法获取In拦截器 3.调用EndpointImpl对象中的方法获取out拦截器 4.添加自己的In拦截器与Ou ...
- OA系统权限管理设计方案学习
学习之:http://www.cnblogs.com/kivenhou/archive/2009/10/19/1586106.html 此为模型图: 据此写了sql语句: drop table if ...