HDU 1198 Farm Irrigation (并查集优化,构图)
本题和HDU畅通project类似。仅仅只是畅通project给出了数的连通关系,
而此题须要自己推断连通关系,即两个水管能否够连接到一起,也是本题的难点所在。
记录状态。不断combine(),注意仅仅须要推断左方和上方即可,这样不会反复推断,并且肯定都能够遍历到全部的状态。
#include<stdio.h>
#include<iostream>
#include<string>
//记录水管的形状,每种水管用一个由'0'和'1'组成的长度为4的字符串代表,
//分别表示上下左右四边是否有接口,'0'无,'1'有
char a[11][5]={"1010","1001","0110","0101","1100","0011",
"1011","1110","0111","1101","1111"};
int father[51][51];
char map[51][51];
int n,m;
using namespace std;
int find(int x)//查找父节点,并压缩路径
{
if(father[x/n][x%n]!=x)
father[x/n][x%n]=find(father[x/n][x%n]);
return father[x/n][x%n];
} void Union(int x,int y)//合并x,y的集合
{
x=find(x);
y=find(y);
if(x!=y)
father[y/n][y%n]=x;
} void judge(int i,int j)//推断map[i][j]和它的左側和上側是否连通,如连通则合并
{
if(j>0&&a[map[i][j]-'A'][2]=='1'&&a[map[i][j-1]-'A'][3]=='1')//推断上方
Union(i*n+j,i*n+j-1); if(i>0&&a[map[i][j]-'A'][0]=='1'&&a[map[i-1][j]-'A'][1]=='1')//推断左方
Union(i*n+j,(i-1)*n+j);
} int main()
{
int i,j,count;
while(scanf("%d%d",&m,&n)!=-1&&(n!=-1||m!=-1))
{
for(i=0;i<m;i++)
{
scanf("%s",map[i]);//输入矩阵
for(j=0;j<n;j++)
father[i][j]=i*n+j;//将父节点初始化
} for(i=0;i<m;i++)
for(j=0;j<n;j++)
judge(i,j); count=0;//查找父节点是本身的点的个数。即共同拥有几个集合
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(father[i][j]==i*n+j)
count++;
printf("%d\n",count);
}
return 0;
}
HDU 1198 Farm Irrigation (并查集优化,构图)的更多相关文章
- 杭电OJ——1198 Farm Irrigation (并查集)
畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...
- hdu 1198 Farm Irrigation(深搜dfs || 并查集)
转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm ...
- HDU 1198 Farm Irrigation(并查集,自己构造连通条件或者dfs)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1198 Farm Irrigation(并查集)
题意: Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a ...
- HDU 1198 Farm Irrigation(并查集+位运算)
Farm Irrigation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tot ...
- HDU 1198 Farm Irrigation(状态压缩+DFS)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1198 题目: Farm Irrigation Time Limit: 2000/1000 MS (Ja ...
- HDU 1198 Farm Irrigation (并检查集合 和 dfs两种实现)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu1198 Farm Irrigation 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1198 简单并查集 分别合并竖直方向和水平方向即可 代码: #include<iostream&g ...
- hdu.1198.Farm Irrigation(dfs +放大建图)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1198 Farm Irrigation
令人蛋疼的并查集…… 我居然做了大量的枚举,居然过了,我越来越佩服自己了 这个题有些像一个叫做“水管工”的游戏.给你一个m*n的图,每个单位可以有11种选择,然后相邻两个图只有都和对方连接,才判断他们 ...
随机推荐
- 阿里云centos系统上安装ftp
最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...
- c#调用带有自定义表结构的存储过程
1.新建自定义表结构 CREATE TYPE [dbo].[HBForHBGHDR] AS TABLE( [序号] [int] NULL, [客户编号] [varchar](15) NULL ) GO ...
- Linux 安装配置JDK 、 MySQL 、nginx
今天我来讲一下在Linux下各环境的搭建,主要就讲一下jdk.MySQL.和一个代理服务器nginx 1. jdk的安装配置 1)卸载自带openjdk 当我们拿到一个全新的ECS的时候上面有的会自带 ...
- MSSQL服务器 电脑改名后配置
原服务器名改为新的名字后,系统配置更新 select * from sys.sysserversexec sp_dropserver 'WIN-JVU5CSOLEPL'exec sp_addserve ...
- hbase无法启动,The node /hbase is not in ZooKeeper
问题详细描述如下: 2016-12-09 15:10:39,160 ERROR [org.apache.hadoop.hbase.client.ConnectionManager$HConnectio ...
- 使用 CSS 追踪用户
原文地址:Crooked Style Sheets 作者:jbtronics 除了使用 JS 追踪用户,现在有人提出了还可以使用 CSS 进行网页追踪和分析,译者认为,这种方式更为 优雅,更为 简洁, ...
- 【JSP】上传图片到数据库中
第一步:建立数据库 create table test_img(id number(4),name varchar(20),img long raw); 第二步:(NewImg.html) <h ...
- HDU_2149_基础博弈sg函数
Public Sale Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Higher-Order Functions and Lambdas
https://kotlinlang.org/docs/reference/lambdas.html
- jquery.datatable.js实际运用
$.dataTablesSettings = { deferRender: true,// 当处理大数据时,延迟渲染数据,有效提高Datatables处理能力 bStateSave: true,//表 ...