博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BFS】【map】hdu5925 Coconuts
阅读量:6080 次
发布时间:2019-06-20

本文共 1672 字,大约阅读时间需要 5 分钟。

题意:一张n*m的网格图(n和m可以达到10^9),其中K个点是障碍物(不超过200个),问你没有被障碍物占据的点形成了几个连通块?并且输出各个连通块的大小。

容易证明,大小超过40000的连通块最多只有一个。于是可以从每个与障碍物邻接的非障碍点出发bfs,限制步数不超过40000,这样就可以找到所有小的连通块。最后如果n*m-K-小的连通块的总大小不等于0,则剩下的就是那个大的连通块的大小。

用map打标记进行判重。

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;typedef pair
Point;const int dx[]={0,-1,0,1,1,-1,1,-1},dy[]={-1,0,1,0,-1,-1,1,1};const int dx1[]={0,-1,0,1},dy1[]={-1,0,1,0};Point p[205];int T,m,n,K;int main(){ scanf("%d",&T); for(int zu=1;zu<=T;++zu){ map
vis; set
za; vector
vs; printf("Case #%d:\n",zu); scanf("%d%d%d",&n,&m,&K); for(int i=1;i<=K;++i){ scanf("%d%d",&p[i].first,&p[i].second); za.insert(p[i]); } int bj=0; for(int i=1;i<=K;++i){ int x=p[i].first,y=p[i].second; for(int j=0;j<8;++j){ int tx=x+dx[j],ty=y+dy[j]; if(tx>=1 && tx<=n && ty>=1 && ty<=m){ if(za.find(Point(tx,ty))==za.end()){ if(!vis[Point(tx,ty)]){ ++bj; queue
q; q.push(Point(tx,ty)); vis[Point(tx,ty)]=bj; int cnt=1; bool flag=1; while(!q.empty()){ Point U=q.front(); q.pop(); for(int k=0;k<4;++k){ int ttx=U.first+dx1[k],tty=U.second+dy1[k]; if(ttx>=1 && ttx<=n && tty>=1 && tty<=m && za.find(Point(ttx,tty))==za.end()){ int tmp=vis[Point(ttx,tty)]; if(tmp>0 && tmp
40000){ flag=0; goto OUT; } } } } } OUT: if(flag){ vs.push_back((ll)cnt); } } } } } } ll sum=0; for(vector
::iterator it=vs.begin();it!=vs.end();++it){ sum+=(*it); } if((ll)n*(ll)m>sum+(ll)K){ vs.push_back((ll)n*(ll)m-sum-(ll)K); } sort(vs.begin(),vs.end()); int sz=vs.size(); printf("%d\n",sz); for(int i=0;i

转载于:https://www.cnblogs.com/autsky-jadek/p/7885600.html

你可能感兴趣的文章
玩转搭载眼球追踪的FOVE 0,需要多高的配置呢?
查看>>
vue-router 源码:前端路由
查看>>
Flask下载文件
查看>>
java基础学习_基础语法(上)02_day03总结
查看>>
乐视印度公司裁员80%,全球化扩张遭遇滑铁卢,它还能撑多久?
查看>>
weex sdk集成到Android工程二. weex sdk集成到Android工程
查看>>
Git工程实践(二)多账号配置
查看>>
鱼鹰软件签约老牌传播机构思艾传播集团
查看>>
线程(杂)
查看>>
未来杯高校AI挑战赛激战正酣 金山云全程提供云资源
查看>>
【资讯】福布斯:旅行积分计划是区块链主要目标,对旅行者来说是好消息
查看>>
高桥智隆:未来机器人将取代智能手机,并成为人类的朋友
查看>>
工信部表示:建立网络数据安全管理体系 强化用户个人信息保护
查看>>
感受真实的华为-记山东CIO智库会员华为之行
查看>>
Spring的依赖注入概述
查看>>
为什么我的联想打印机M7450F换完墨粉之后打印机显示请更换墨粉盒?这是我的墨盒第一次灌粉&#183;、...
查看>>
命运多舛、前途未卜,共享经济年终盘点之网约车
查看>>
研究人员研制出可有效抑制艾滋病病毒的新药,可让病毒几乎检测不出来
查看>>
什么是区块链?超级账本 Brian Behlendorf 从五个方面教你认识
查看>>
独家揭秘:2017中国人工智能与机器人创新大会大咖云集
查看>>