主要题意是:大海之间有岛,有的岛之间有桥,问你岛的个数,桥的个数,以及没有桥联通岛的个数,其中最后一次输入的没有回车,不注意的话最后一次会被吞,第二,桥的两端的标记是“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相关推荐

  1. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  2. 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​​ ...

  3. Problem J: 神医胡青牛

    Problem J: 神医胡青牛 题目: 胡青牛是"倚天屠龙记"中的神医,每天都有N多(N<=2000)的人来求他治病,这些人排成一队,从1开始编号直到N ,每个人手里都拿着 ...

  4. 华农oj Problem J: 幻化【贪心/抽屉原理】

    Problem J: 幻化 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 18 Solved: 3 [Submit][Status][Web Board ...

  5. 图算法—Problem J

    图算法-Problem J 题意 题目大意是给一个图.起点为1,终点为2:然后点a到点b是合法的判断是当b存在一个到终点的距离小于a到终点的最小距离.求从起点到终点的路径数. 解题思路 我的做法是di ...

  6. Problem J: 学生成绩统计表

    Problem J: 学生成绩统计表 Time Limit: 1 Sec   Memory Limit: 16 MB Submit: 902   Solved: 416 [ Submit][ Stat ...

  7. zcmu Problem J: 不存在的泳池

    [题目] Problem J: 不存在的泳池 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 246  Solved: 92 [Submit][Stat ...

  8. HDU Problem - 4280 Island Transport(最大流)

    题目链接 Problem Description In the vast waters far far away, there are many islands. People are living ...

  9. Problem J day-of-year

    Problem Description 编写函数day_of_year(month, day, year),使得函数返回由这三个参数确定的那一天是一年中的第几天(1和366之间的整数).  测试程序为 ...

最新文章

  1. 人工智能与大数据的完美结合
  2. html文档打开错误,我的html的文档无法打开,打开也是报错
  3. windows 临界区
  4. wpf项目无法使用针式打印机_针式打印机更换色带芯
  5. [VMware] vSphere 5 安装手记[1]-VMware ESXi 5.0.0 安装基本设置
  6. Pulsar较Kafka的优势
  7. 论文笔记_S2D.52_CMRNet++:在激光雷达地图中进行内参未知的相机的单目视觉定位
  8. 电源大师课笔记 2.6
  9. 关于Fluent瞬态计算你必须掌握的3个技巧
  10. 工业机器人技术试题_《工业机器人技术基础》课程试卷A卷 参考答案
  11. 制图折断线_cad折断线怎么画,你值得一看的技巧
  12. 2019年51CTO学院发布课程回顾总结-引莫(孙忠)
  13. S.M.A.R.T原则:目标管理概念 - 让你的管理规范化
  14. 秘籍:MSN好友IP地址随便查
  15. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)
  16. 生成式语言大模型压缩技术思考——以ChatGPT为例
  17. 探索式软件测试学习笔记
  18. [激光原理与应用-40]:《光电检测技术-7》- 常见光干涉仪及其应用
  19. 江西理工大学计算机考研资料汇总
  20. 图像阈值分割:最大熵法

热门文章

  1. 【推荐】本周值得关注的将开源论文,包含分类、分割、人脸、目标检测、ReID等...
  2. CVPR2020|无需3D运动数据训练,最新SOTA人体姿势估计方法
  3. CVPR19 Oral 如何避免高置信度的错误预测?
  4. 8 个Python技巧 每天工作效率高一点 升职快人一步
  5. 经验 | 计算机专业科班出身如何提高自己编程能力?
  6. 收藏 | 一文带你深入理解深度学习最新进展
  7. 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
  8. TCP、UDP(网络协议:传输层协议)
  9. fragtats中连接度指数(CONNECT)的具体解释
  10. 看别人情侣空间显示服务器繁忙什么意思,调查13000位80后年轻人,他们的感情状态究竟如何?...