hdu1198 Farm Irrigation —— dfs or 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1198
dfs:
#include<cstdio>//hdu1198 dfs
#include<cstring> int well[][] = { {,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,},{,,,,}}; const int ca[][] = {,,,,,,,,,}, mov[][] = {,,-,,,,,-};
int m,n,sum, map[][],id[][]; void build(int set, int x, int y)
{
for(int k = ; k<; k++)
{
if(well[set][k])
{
map[*x+ca[k][]][*y+ca[k][]] = ;
}
}
} void dfs(int x, int y, int iden)
{
id[x][y] = iden;
for(int i = ; i<; i++)
{
int xx = x + mov[i][], yy = y + mov[i][];
if(xx< || xx>*m- || yy< || yy>*n- ) continue;
if(map[xx][yy] && !id[xx][yy])
dfs(xx,yy,iden);
}
} int main()
{
char init[];
while(scanf("%d%d",&m,&n) && (m!=- || n!=- ))
{
memset(map,,sizeof(map));
memset(id,,sizeof(id));
for(int i = ; i<m; i++)
{
scanf("%s",init);
for(int j = ; j<n; j++)
build(init[j]-,i,j);
}
sum = ;
for(int i = ; i<=*m-; i++)
{ for(int j = ; j<=*n-; j++)
{
//printf("%d ",map[i][j]);
if(map[i][j] && !id[i][j])
{
dfs(i,j,++sum);
}
}
//putchar('\n');
} printf("%d\n",sum); }
return ;
}
并查集:
#include<cstdio>//hdu1198 并查集 每个格子的标号为i*n+j,初始father也为i*n+j,以次来作为合并集合的依据
#include<cstring> int n,m,father[][];
char map[][];
char type[][]={"","","","","","",
"","","","",""}; int find(int x)
{
return (x==father[x/n][x%n])?x:find(father[x/n][x%n]);
} int unit(int a, int b)
{
a = find(a);
b = find(b);
if(a!=b)//合并集合
father[a/n][a%n] = b;
} int judge(int i, int j)
{ //判断是否与左边相连
if(j> && type[map[i][j]-'A'][]=='' && type[map[i][j-]-'A'][]=='')
unit(i*n+j,i*n+j-);
//判断是否与上边相连
if(i> && type[map[i][j]-'A'][]=='' && type[map[i-][j]-'A'][]=='')
unit(i*n+j,(i-)*n+j);
} int main()
{
while(scanf("%d%d",&m,&n) && (m!=- || n!=-))
{
for(int i = ; i<m; i++)
{
scanf("%s",&map[i]);
for(int j = ; j<n; j++)
{ //初始化为自己
father[i][j] = i*n+j;
}
} //并查集过程
for(int i = ; i<m; i++)
for(int j = ; j<n; j++)
judge(i,j); int sum = ;
for(int i = ; i<m; i++)
for(int j = ; j<n; j++)//看看有多少个“根节点”
if(father[i][j]==i*n+j) sum++; printf("%d\n",sum);
} }
hdu1198 Farm Irrigation —— dfs or 并查集的更多相关文章
- 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) ...
- acdream 1685 多民族王国(DFS,并查集)
Problem Description 娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫.娜娜发现这个王国有很多个民族组成,每个民族都有自己的 ...
- HDU 5438 Ponds (DFS,并查集)
题意:给定一个图,然后让你把边数为1的结点删除,然后求连通块结点数为奇的权值和. 析:这个题要注意,如果删除一些结点后,又形成了新的边数为1的结点,也应该要删除,这是坑,其他的,先用并查集判一下环,然 ...
- 判图的连通性(dfs,并查集)
一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为偶数,或者只有2个点度数为奇数 当然判连通性 hdu 1878 欧拉回路 两种判连通的方法 dfs #include <iostr ...
- ZOJ 2412 Farm Irrigation(DFS 条件通讯块)
意甲冠军 两个农田管内可直接连接到壳体 他们将能够共享一个水源 有11种农田 管道的位置高于一定 一个农田矩阵 问至少须要多少水源 DFS的连通块问题 两个相邻农田的管道能够直接连接的 ...
- 蓝桥杯历届试题 危险系数(dfs或者并查集求无向图关于两点的割点个数)
Description 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个 ...
- Codeforces Round #375 (Div. 2) D. Lakes in Berland (DFS或并查集)
D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)
http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...
随机推荐
- Oracle服务扫描工具Oscanner
Oracle服务扫描工具Oscanner Oracle是甲骨文公司推出的关系型数据库,适用于中大规模数据存储,如大型企业.电信.银行等行业.Kali Linux集成了Oracle服务扫描专向工具O ...
- 管理SQL Server监控
http://blog.csdn.net/DBA_Huangzj/article/category/1133081 http://www.cnblogs.com/bhtfg538/archive/20 ...
- iOS 改变Search Bar中Scope Button中文本的颜色和字体
- (void)initSearchbar{ self.wineSearchBar.delegate = self; [self.wineSearchBar setScopeBarButtonTitl ...
- sql的一些知识_函数_汇总数据
汇总数据 avg()---------求平均数 值得注意的是:avg()只能用于一个列的平均值查询,多个列的平均值请使用多个avg() avg()忽略null值 count()-------计数(指定 ...
- 爬虫基本操作、requests和BeautifulSoup
1. 爬虫基本操作 例如舆情系统: 获取汽车之家新闻放到自己数据库里,创建自己的app,发布内容,注明来源,自己创业. URL指定内容获取到 - 发送Http请求:http://www.autohom ...
- 笔记09 WS,WCF
http://blog.csdn.net/avi9111/article/details/5655563 http://www.cnblogs.com/tearer/archive/2013/04/2 ...
- ubuntu + lamp + laravel 环境配置
首先是LAMP 安装顺序是 A(Apache服务器) M(Mysql) P(Php) 安装apache sudo apt-get install apache2 安装mysql sudo apt-g ...
- div和img之间的缝隙问题
这次做的项目,客户说.banner图的上下之间不要留有空隙,细致一看才发现,上下居然都有空隙.审查元素,发现全部的div,img的padding和margin都是0,对于这个间隙到底是假设产生的真的是 ...
- libraries_v140_x64_py35_1.0.1.tar.bz2 libraries_v120_x64_py27_1.1.0.tar 下载链接以及百度云下载链接
下载链接 wget -c https://github.com/willyd/caffe-builder/releases/download/v1.0.1/libraries_v140_x64_p ...
- linux 块设备驱动(四)——简单的sbull实例
#include <linux/module.h> #include <linux/moduleparam.h> #include <linux/init.h> # ...