当前位置: 首页 > news >正文

全球变暖-bfs

1.不沉的就是4个方向没有海,一个大岛屿有一个不沉就行了,其余染色就好了

2.第一个bfs来统计总岛屿个数

3.第二个来统计不沉岛屿个数

4.一减就ac啦

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<ll,int> pii;
int n;
char mp[1011][1011];
bool a[1011][1011];
int dx[8]={-1,-1,0,1,1,1,0,-1};
int dy[8]={0,1,1,1,0,-1,-1,-1};
int wx[4]={-1,0,1,0};
int wy[4]={0,1,0,-1};
bool b[1011][1011];
typedef struct node
{int x,y;
}node;
bool check(int x,int y)
{if(mp[x][y]=='.') return false;if(x+1<=n){if(mp[x+1][y]=='.') return false;}if(y+1<=n) if(mp[x][y+1]=='.') return false;if(x-1>=1) if(mp[x-1][y]=='.') return false;if(y-1>=1) if(mp[x][y-1]=='.') return false;return true;
}
void bfs(int x,int y)///这个bfs是找到了不沉海的岛屿,然后利用bfs染色其岛屿,///最后遍历一遍就能知道原来的岛屿中 哪些是不沉的 
{a[x][y]=true;queue<node> q;q.push({x,y});while(q.size()){node t=q.front();q.pop();int x=t.x,y=t.y;for(int i=0;i<4;i++){int tx=x+wx[i];int ty=y+wy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=n){if(!a[tx][ty]&&mp[tx][ty]=='#'){a[tx][ty]=true;q.push({tx,ty});}}}}
}
void bfs1(int x,int y)///找总岛屿个数 
{b[x][y]=true;queue<node> q;q.push({x,y});while(q.size()){node t=q.front();q.pop();int x=t.x,y=t.y;for(int i=0;i<4;i++){int tx=x+wx[i];int ty=y+wy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=n){if(!b[tx][ty]&&mp[tx][ty]=='#'){b[tx][ty]=true;q.push({tx,ty});}}}}
}
ll an,am;
int main()
{cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>mp[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(mp[i][j]=='#'&&!b[i][j]){bfs1(i,j);am++;}}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(mp[i][j]=='#'&&check(i,j)&&!a[i][j])///满足check就不沉,一个岛屿有一个就行‘///剩下就染色防止重复遍历就行了 {bfs(i,j);an++;}}}cout<<am-an;return 0;
}

http://www.xdnf.cn/news/407485.html

相关文章:

  • 健康养生指南:解锁活力生活的科学密码
  • NY115NY121美光科技芯片NY122NY130
  • 物联网驱动的共享充电站系统:智能充电的实现原理与技术解析!
  • hiveserver2与beeline进行远程连接hive配置及遇到的问题
  • Web 架构之故障自愈方案
  • langchain4j集成QWen、Redis聊天记忆持久化
  • 【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SGSIT/SERR/BV-01-C】
  • 右值和移动
  • 部署Superset BI(六)Superset 的主机安装
  • 文件上传总结
  • Redis——达人探店
  • CSS3 遮罩
  • HTML5 中实现盒子水平垂直居中的方法
  • 【启动盘制作】macbook 制作windows启动盘,重装 Windows 的详细教程
  • C++:公有,保护及私有继承
  • 数据结构-树(1)
  • 硬件设备基础
  • 豆瓣电影Top250数据工程实践:从爬虫到智能存储的技术演进(含完整代码)
  • Mysql使用PXC实现高可用
  • js 字符串中的特殊字符全部替换成定义对象里面key对应的value值(进阶篇)
  • Python60日基础学习打卡D12【虫豸版】
  • 如何使用 React Hooks 替代类组件的生命周期方法?
  • Linux服务器连接SSH工具FinalShell安装使用支持Linux文件上传下载
  • (自用)Java学习-5.8(总结,springboot)
  • 【合新通信】无人机天线拉远RFOF(射频光纤传输)解决方案
  • upload-labs通关笔记-第01关 文件上传之前端绕过(3种渗透方法)
  • 浙江大学 deepseek 公开课 第三季 第3期 - 陈喜群 教授 (附PPT下载) by 突破信息差
  • Linux笔记---信号(上)
  • SWMM在城市排水防涝规划中的实战应用:模型校准、情景模拟与工程决策
  • Linux进程10-有名管道概述、创建、读写操作、两个管道进程间通信、读写规律(只读、只写、读写区别)、设置阻塞/非阻塞