Problem J: Island Buses
主要题意是:大海之间有岛,有的岛之间有桥,问你岛的个数,桥的个数,以及没有桥联通岛的个数,其中最后一次输入的没有回车,不注意的话最后一次会被吞,第二,桥的两端的标记是“X”(X也代表陆地),“X”的四周都可以有“B”形成的桥,一开始没写好,后来根据“X”标记所有的桥只能走一次然后标记……总之,虽然是水题,写出来还是蛮开心的……
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <map> #include <cmath> #include <cstring> #include <string> #include <queue> #include <stack> #include <cctype>const double Pi = atan(1) * 4; using namespace std; char str[100][100]; bool visit1[100][100]; bool visit2[100][100]; int cnt ; int len; int bridge; int dr[] = {1,-1,0,0}; int dc[] = {0,0,-1,1}; void dfs1(int r,int c){visit1[r][c] = 1;for(int i = 0;i < 4;i++){int xx = r + dr[i];int yy = c + dc[i];if(xx >= 0 && yy >= 0 && xx < cnt && yy < len){if(!visit1[xx][yy] && (str[xx][yy] == '#' || str[xx][yy] == 'X' )){dfs1(xx,yy);}}} } void dfs2(int r,int c){visit2[r][c] = 1;for(int i = 0;i < 4;i++){int xx = r + dr[i];int yy = c + dc[i];if(xx >= 0 && yy >= 0 && xx < cnt && yy < len){if(!visit2[xx][yy] && (str[xx][yy] == '#' || str[xx][yy] == 'X')){dfs2(xx,yy);}else if(str[xx][yy] == 'B' && str[r][c] == 'X' && !visit2[xx][yy]){int j = 0;visit2[xx][yy] = 1;bridge++;while(1){j++;int tt1 = xx + j * dr[i];int tt2 = yy + j * dc[i];if(tt1 < 0 || tt2 < 0 || tt1 >= cnt || tt2 >= len)break;visit2[tt1][tt2] = 1;if(str[tt1][tt2] == 'X'){dfs2(tt1,tt2);break;}}}}} } int main() {//freopen("input.in","r",stdin);//freopen("output.in","w",stdout);cnt = 0;int cas = 1;memset(str,0,sizeof(str));while(fgets(str[0],sizeof(str[0]),stdin) != NULL){if(cas != 1)cout << endl;len = strlen(str[0]) - 1;while((fgets(str[++cnt],sizeof(str[0]),stdin) )!= NULL){if(str[cnt][0] == 10){break;}}bridge = 0;int bus = 0;int island = 0;memset(visit1,0,sizeof(visit1));memset(visit2,0,sizeof(visit2));for(int i = 0;i <= cnt;i++){for(int j = 0;j < len;j++){if( (str[i][j] == '#' || str[i][j] == 'X') && !visit1[i][j]){island++;dfs1(i,j);}if( (str[i][j] == '#' || str[i][j] == 'X')&& !visit2[i][j]){bus++;dfs2(i,j);}}}cout << "Map " << cas++ << endl;cout << "islands: " << island << endl;cout << "bridges: " << bridge << endl;cout << "buses needed: " << bus << endl;cnt = 0;memset(str,0,sizeof(str));}return 0; }
View Code
转载于:https://www.cnblogs.com/hanbinggan/p/4256478.html
Problem J: Island Buses相关推荐
- Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...
- 2019 ICPC World Finals Problem J. Miniature Golf
2019 ICPC World Finals Problem J. Miniature Golf Solution 设lll为l0l_0l0时iii的总分为si,l0s_{i,l_0}si,l0 ...
- Problem J: 神医胡青牛
Problem J: 神医胡青牛 题目: 胡青牛是"倚天屠龙记"中的神医,每天都有N多(N<=2000)的人来求他治病,这些人排成一队,从1开始编号直到N ,每个人手里都拿着 ...
- 华农oj Problem J: 幻化【贪心/抽屉原理】
Problem J: 幻化 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 18 Solved: 3 [Submit][Status][Web Board ...
- 图算法—Problem J
图算法-Problem J 题意 题目大意是给一个图.起点为1,终点为2:然后点a到点b是合法的判断是当b存在一个到终点的距离小于a到终点的最小距离.求从起点到终点的路径数. 解题思路 我的做法是di ...
- Problem J: 学生成绩统计表
Problem J: 学生成绩统计表 Time Limit: 1 Sec Memory Limit: 16 MB Submit: 902 Solved: 416 [ Submit][ Stat ...
- zcmu Problem J: 不存在的泳池
[题目] Problem J: 不存在的泳池 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 246 Solved: 92 [Submit][Stat ...
- HDU Problem - 4280 Island Transport(最大流)
题目链接 Problem Description In the vast waters far far away, there are many islands. People are living ...
- Problem J day-of-year
Problem Description 编写函数day_of_year(month, day, year),使得函数返回由这三个参数确定的那一天是一年中的第几天(1和366之间的整数). 测试程序为 ...
最新文章
- 人工智能与大数据的完美结合
- html文档打开错误,我的html的文档无法打开,打开也是报错
- windows 临界区
- wpf项目无法使用针式打印机_针式打印机更换色带芯
- [VMware] vSphere 5 安装手记[1]-VMware ESXi 5.0.0 安装基本设置
- Pulsar较Kafka的优势
- 论文笔记_S2D.52_CMRNet++:在激光雷达地图中进行内参未知的相机的单目视觉定位
- 电源大师课笔记 2.6
- 关于Fluent瞬态计算你必须掌握的3个技巧
- 工业机器人技术试题_《工业机器人技术基础》课程试卷A卷 参考答案
- 制图折断线_cad折断线怎么画,你值得一看的技巧
- 2019年51CTO学院发布课程回顾总结-引莫(孙忠)
- S.M.A.R.T原则:目标管理概念 - 让你的管理规范化
- 秘籍:MSN好友IP地址随便查
- 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)
- 生成式语言大模型压缩技术思考——以ChatGPT为例
- 探索式软件测试学习笔记
- [激光原理与应用-40]:《光电检测技术-7》- 常见光干涉仪及其应用
- 江西理工大学计算机考研资料汇总
- 图像阈值分割:最大熵法
热门文章
- 【推荐】本周值得关注的将开源论文,包含分类、分割、人脸、目标检测、ReID等...
- CVPR2020|无需3D运动数据训练,最新SOTA人体姿势估计方法
- CVPR19 Oral 如何避免高置信度的错误预测?
- 8 个Python技巧 每天工作效率高一点 升职快人一步
- 经验 | 计算机专业科班出身如何提高自己编程能力?
- 收藏 | 一文带你深入理解深度学习最新进展
- 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
- TCP、UDP(网络协议:传输层协议)
- fragtats中连接度指数(CONNECT)的具体解释
- 看别人情侣空间显示服务器繁忙什么意思,调查13000位80后年轻人,他们的感情状态究竟如何?...