Gym 100971A Treasure Island
题目链接
题目字面意思是让?变成 . 或#,使得 . 可以连成一片,唯一就把图输出,不唯一就输出Ambiguous,否则Impossible.
先将所有的 . dfs遍历一遍,记录有几块相连的陆地数k,并记录扫过的格子数cnt_s,途中遇到的?就把它当成 . ,如果有没遇到的?说明被#包围,则这个?一定为#。遍历完后,如果k>1,那么肯定是Imossible,如果k为1,再把dfs过程中遇到的每一个?当成#,分别在dfs,计算相连的陆地数cnt,如果有cnt==cnt_s-1,那么有多解,否则解唯一。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#define MAX_N 55
using namespace std;
char map[MAX_N][MAX_N];
int n,m;
int cnt_s;
int cnt_p;
int cnt;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
bool vis[MAX_N][MAX_N];
void dfs(int sx,int sy)
{vis[sx][sy]=true;for(int i=0;i<4;i++){int tx=sx+dx[i];int ty=sy+dy[i];if(tx>=0&&tx<n&&ty>=0&&ty<m&&map[tx][ty]!='#'&&!vis[tx][ty]){cnt++;if(map[tx][ty]=='?')map[tx][ty]='*';//标记走过的? vis[tx][ty]=true;dfs(tx,ty);}}return ;
}
int main(void)
{while(scanf("%d%d",&n,&m)==2){cnt_p=0;int sx,sy;for(int i=0;i<n;i++)scanf("%s",map[i]);memset(vis,false,sizeof(vis));int k=0;//k块陆地 for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(map[i][j]=='.'&&!vis[i][j]){k++;cnt=1;dfs(i,j);sx=i;sy=j;}}}if(k>1){printf("Impossible\n");continue;}cnt_s=cnt;bool ok=false;for(int i=0;i<n&&!ok;i++){for(int j=0;j<m&&!ok;j++){cnt=1;if(map[i][j]=='*'){memset(vis,false,sizeof(vis));map[i][j]='#';dfs(sx,sy);if(cnt==cnt_s-1)ok=true;map[i][j]='.';}}}if(ok)printf("Ambiguous\n");else{for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(map[i][j]=='.')printf("."`
;elseprintf("#");}printf("\n");}}}return 0;
}
Gym 100971A Treasure Island相关推荐
- Treasure Island CodeForces - 1214D(dfs)
All of us love treasures, right? That's why young Vasya is heading for a Treasure Island. Treasure I ...
- D. Treasure Island
D. Treasure Island dfs大法好== 写半天bfs疯狂MLE dfs标记掉路上的一些点 然后再跑一遍dfs #include<bits/stdc++.h> using n ...
- Treasure Island(简单图论题)
原题:Gym-100971A 题意: n*m图,'.'代表陆地,'#'代表海,'?'未知,问你是否有确定的一片大陆(没有其他点) 解析: 开始的时候没看到条件(一定有一个'.')多写了一大堆判断条件 ...
- CF1214D Treasure Island
考虑一种新手都打得出的方法:bfs. 首先从终点反向bfs,搜出所有能到达终点的点.然后我们从起点开始bfs,把那些能到终点的没访问过的点入队,找到终点直接结束,而答案就是任意时刻队列里点的数量的最小 ...
- 001_wz_bbk_GCC的介绍与发展历史
Reference Books An Introduction to GCC Expert C programming reference books A Brief(简短的) History of ...
- 003_wz_bbk_Linux下GCC的安装
安装 打开终端输入: yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget htt ...
- 005_wz_bbk_-v详细信息,-c生成中间文件,链接次序
Verbose(冗长的) Compilation The '-v' option can be used to display detailed information about the exact ...
- 002_wz_bbk_GCC的特点
Features of GCC GCC is a portable complier -- it runs on most platforms(平台) available today,and can ...
- 写出高效率python的90个方法,附案例(python3经典编程案例)
Effective Python摘录. 一. 培养Pythonic思维 1. 查询自己使用的python版本 import sys print(sys.version_info) print(sys. ...
最新文章
- kafka 主动消费_SpringBoot2 整合Kafka组件,应用案例和流程详解
- 第一天入职,备用vs快捷键大全
- 用反向传导模拟电子运动并模拟HF,HCl,HBr
- signature=6a8815f5009aacac86e725bea54f840f,A wave packet signature for complex networks
- [Machine learning] 国外程序员整理的机器学习资源大全
- typescript数组,对象,接口实例
- Go Micro搭建简单微服务
- ElasticSearch多字段查询best_fieldsmost_fields
- windows上安装使用mySql
- 为什么物联网产品迫切需要良好的 UI/UX 设计?
- android获取组件id,Android 获取控件id的三种方式
- python学习笔记--Django入门二 Django 的模板系统
- oracle数据库的sql语句练习1
- 免费的两种https证书申请和安装
- Tomcat8+Redis集群解决会话共享
- Web的缓存加速(Squid的安装与配置)
- 电影票房预测-kaggle项目Python项目
- “华远新能源”:光伏产业链发展持续向好
- QT 添加图片资源 显示图片
- 算法 64式 7、搜索算法整理_第3部分_31到45题
热门文章
- linux缓冲区 即 块
- 找出词典中的所有的变位词 --By LXW
- 一个数据库超全,支持免费高速下载专利的资源库--欧洲专利局Espacenet
- 2022-2028年中国红枣行业发展模式分析及市场分析预测报告
- lcd屏和amoled屏哪个护眼呢 lcd屏和amoled屏哪个更耗电
- CodeForces 597 A. Divisibility(坑,满满的都是坑)
- mysql LOCATE() 函数 模糊查询,类似like %%
- ArcGIS 栅格计算器 Con用法
- [USACO13NOV]Crowded Cows
- As-Projective-As-Possible Image Stitching with Moving DLT阅读笔记