hdu 5652(并查集)
题意:很久之前,在中国和印度之间有通路,通路可以简化为一个n*m的字符串,0表示能通过,1表示障碍,每过一年就有一个坐标变成1,问你什么时候,通路彻底无法通过;
解题思路:无向图的连通性,一般直接搜索或者并查集判定,这里用的是并查集,我们把相连的障碍放到一个集合内,然后如果第一列的某点和最后一列的某点也在这个集合内,那么说明,这个通路被障碍堵死了;
这里要处理下第一列和最后一列的问题,可以选择
#include<iostream>
#include<algorithm>
#define N 605
using namespace std;
int next1[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
int dx[]={-1,-1,-1,0,0,1,1,1};
int dy[]={-1,0,1,-1,1,-1,0,1};
int f[N*N];
char a[N][N];
int findf(int x)
{
if(f[x]==x)
return x;
else findf(f[x]);
}
void join(int x,int y)
{
int t1=findf(x);
int t2=findf(y);
if(t1!=t2)
f[t2]=t1;
}
int main()
{
int tx,ty;
int n,m;
int t;
int tt;
cin>>t;
while(t--)
{
cin>>n>>m;
int s,e;
s=n*m;e=s+1;
for(int i=0;i<=e;i++)
f[i]=i;
for(int i=0;i<n;i++)
{
join(s,m*i);join(e,m*i+m-1);
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(a[i][j]=='0')
continue;
for(int k=0;k<8;k++)
{
tx=i+dx[k];ty=j+dy[k];
if(tx<0||ty<0||tx>=n||ty>=m||a[tx][ty]=='0')
continue;
join(i*m+j,tx*m+ty);
}
}
cin>>tt;
int x,y;
int flag=-1;
for(int i=1;i<=tt;i++)
{
cin>>x>>y;
if(flag!=-1)
continue; a[x][y]='1';
for(int k=0;k<8;k++)
{
tx=x+dx[k];ty=y+dy[k];
if(tx<0||ty<0||tx>=n||ty>=m||a[tx][ty]=='0')
continue;
join(tx*m+ty,x*m+y);
}
if(findf(s)==findf(e))
flag=i;
}
cout<<flag<<endl;
}
return 0;
}
添加两点,一点和第一列所有点合并,另一点和最后一列所有点合并,如果这两点在一个集合内了,说明两列内有点在一个集合;
hdu 5652(并查集)的更多相关文章
- hdu 4514 并查集+树形dp
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- HDU 3926 并查集 图同构简单判断 STL
给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...
- HDU 4496 并查集 逆向思维
给你n个点m条边,保证已经是个连通图,问每次按顺序去掉给定的一条边,当前的连通块数量. 与其正过来思考当前这边会不会是桥,不如倒过来在n个点即n个连通块下建图,检查其连通性,就能知道个数了 /** @ ...
- HDU 1232 并查集/dfs
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1232 我的第一道并查集题目,刚刚学会,我是照着<啊哈算法>这本书学会的,感觉非常通俗易懂,另 ...
- HDU 2860 并查集
http://acm.hdu.edu.cn/showproblem.php?pid=2860 n个旅,k个兵,m条指令 AP 让战斗力为x的加入y旅 MG x旅y旅合并为x旅 GT 报告x旅的战斗力 ...
- hdu 1198 (并查集 or dfs) Farm Irrigation
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1198 有题目图11种土地块,块中的绿色线条为土地块中修好的水渠,现在一片土地由上述的各种土地块组成,需要浇 ...
- hdu 1598 (并查集加贪心) 速度与激情
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1598 一道带有贪心思想的并查集 所以说像二分,贪心这类基础的要掌握的很扎实才行. 用结构体数组储存公 ...
- hdu 4496(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4496. 思路:简单并查集应用,从后往前算就可以了. #include<iostream> ...
- 2015多校第6场 HDU 5361 并查集,最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5361 题意:有n个点1-n, 每个点到相邻点的距离是1,然后每个点可以通过花费c[i]的钱从i点走到距 ...
随机推荐
- python:实例化configparser模块读写配置文件
之前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用. 实例化的好处有很多,既方便调用,又降低了脚本的维护成本,而且提高 ...
- face recognition[Euclidean-distance-based loss][Center Face]
本文来自<A Discriminative Feature Learning Approach for Deep Face Recognition>,时间线为2016年.采用的loss是C ...
- 容易被忽略的label标签
# 容易被忽略的label标签 ## 原始作用 `label`标签是HTML原生的标签,其原始的作用参考[这里](http://www.w3school.com.cn/tags/tag_label.a ...
- 【IE11请求中止】 XMLHttpRequest: 网络错误 0x2ef3的意外出现
BUG现象 今天排查BUG遇到一个有趣的BUG,测试的截图显示 这个BUG只在IE11下出现. BUG原因 这个问题的原因是keep-alive机制引起. 当浏览器在向一个网址发起请求时,会建立一个t ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 用户密码安全增强
系统的用户密码是有多少重要大家应该心里都有数,一个系统的密码若是大批量泄露,哪怕是少数几个人密码泄露了,都是致命的. 1: 系统里不要保存明文密码,那是引诱人家犯罪.2: 首先防范的不是外鬼,先需要防 ...
- nginx 之 proxy_redirect详解
proxy_redirect 语法:proxy_redirect [ default|off|redirect replacement ] 默认值:proxy_redirect default 使 ...
- 史上最全 原生javascript的知识总结,适合新手及查资料用!
适合右键另存为图片保存,再放大看!
- 《梦断代码》Scott Rosenberg著(一)
两打程序员,3年时间,4732个bug,只为打造超卓软件. --序 在我们平时看到的大部分书籍只是讲技术和理论,但我们其实并不知道在真实的软件开发过程中,这些技术和理论究竟是被什么样的人如何去使用, ...
- 前端开发之jQuery库
使用jquery开发的时候,如果我们不想使用自己的jquery文件,那么可以引用现成的地址.方便日常开发使用 jquery-2.0以上版本 (注!不再支持IE 6/7/8) jquery-2.0.0百 ...
- Es6数值拓展
Es6数值拓展 一,Number扩展 1,ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 将0b和0o前缀的字符串数值转为十进制,要使用Number方法 N ...