题意:

给一个迷宫,其中任意两个可以走的点之间只有一条路,求在这个迷宫里最长能走多远。

分析:

求树的直径,两次dfs即可。

代码:

//poj 1383
//sep9
#include <iostream>
using namespace std;
const int maxN=1024;
char g[maxN][maxN];
int d[maxN][maxN];
int r,c;
int dx[6]={0,0,1,-1};
int dy[6]={1,-1,0,0};
void dfs(int px,int py,int x,int y,int sum)
{d[x][y]=sum;for(int t=0;t<4;++t){int newx=x+dx[t];int newy=y+dy[t];if(newx>=0&&newx<r&&newy>=0&&newy<c&&g[newx][newy]=='.'&&(newx!=px||newy!=py))dfs(x,y,newx,newy,sum+1);}
}
int main()
{int cases;scanf("%d",&cases);while(cases--){int i,j;memset(d,0,sizeof(d));scanf("%d%d",&c,&r);for(i=0;i<r;++i)scanf("%s",g[i]);int ans=0;int sx=-1,sy=-1;for(i=0;i<r&&sx==-1;++i)for(j=0;j<c&&sx==-1;++j)if(g[i][j]=='.'){sx=i;sy=j;}dfs(-1,-1,sx,sy,0);  int maxx=-1,maxi,maxj;for(i=0;i<r;++i)for(j=0;j<c;++j)if(maxx<d[i][j]){maxx=d[i][j];maxi=i;maxj=j;}memset(d,0,sizeof(d));    dfs(-1,-1,maxi,maxj,0);for(i=0;i<r;++i)for(j=0;j<c;++j)ans=max(ans,d[i][j]);printf("Maximum rope length is %d.\n",ans);  }return 0;
}

poj 1383 Labyrinth 树的直径相关推荐

  1. poj 1383 Labyrinth

    题目连接 http://poj.org/problem?id=1383 Labyrinth Description The northern part of the Pyramid contains ...

  2. POJ 1849 Two(树的直径+思维)

    题目链接:http://poj.org/problem?id=1849        题意是有n个点,n-1条边(树形图),在s点放两个机器人,问这两个机器人遍历完所有的点的最少花费(不用回到原点). ...

  3. poj 1985 Cow Marathon 【树的直径】

    求树的直径 /* POJ:1985 Cow Marathon 2014/10/12/21:18 Yougth*/ #include <cstdio> #include <iostre ...

  4. 【POJ - 3310】Caterpillar(并查集判树+树的直径求树脊椎(bfs记录路径)+dfs判支链)

    题干: An undirected graph is called a caterpillar if it is connected, has no cycles, and there is a pa ...

  5. 【POJ - 2631 】Roads in the North(树的直径)

    题干: Building and maintaining roads among communities in the far North is an expensive business. With ...

  6. C++剑指offer:[POJ]2631 Roads in the North - 用树形DP的方式求出一棵树的直径

    前言 此题是道很简单的题(做法不单一,不仅只有树形DP的方法) 做完了这道题才发现此题原来是一道求树的直径的题,也就是求树上两个节点的最大距离. 题目 问题 N(2692): [POJ2631]北极地 ...

  7. 0x63.图论 - 树的直径与最近公共祖先

    目录 一.树的直径(Diameter) 1.树形DP求树的直径 2.两次BFS/DFS求树的直径 1.POJ 1985.Cow Marathon(DFS求树的直径模板题) 2.AcWing 350. ...

  8. 树的直径,树的最长路dp思想

    dp一直弱死了,树型dp很多基本的题都不会,最近在刷树型dp的题,把关于树的最长路的思想总结一下: 树的直径:树中距离最远的两点间的距离. 下面说几道题: hdu 2196:对于树上(双向边)的每一个 ...

  9. 树的直径,树的重心,树的分冶

    主要是利用了反证法: 假设 s-t这条路径为树的直径,或者称为树上的最长路 现有结论,从任意一点u出发搜到的最远的点一定是s.t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两 ...

最新文章

  1. 干货,Wireshark使用技巧-过滤规则
  2. mysql master slave_mysql master slave
  3. oracle job如何执行存储过程,oracle定时执行存储过程的job
  4. 免费LInux主机资源
  5. PowerDesigner反向工程 mysql
  6. Consider defining a bean of type ‘com.xg.stupro.service.StudentService‘ in your configuration.
  7. java传输对象_如何传输Java对象
  8. 学习笔记(08):MySQL数据库运维与管理-03-用户权限回收
  9. 微课|玩转Python轻松过二级(3.2节):元组与生成器推导式
  10. 2017 ICPC西安区域赛 A - XOR (线段树并线性基)
  11. WPF中StackPanel的尺寸的怪癖
  12. python绘制太阳花_Python绘制蟒蛇和太阳花
  13. 计算机程序设计艺术初读感
  14. 元素的显示、隐藏、遮罩
  15. 社交口才:处理好人际关系的七种谈话技巧
  16. Cover Letter 写作技巧
  17. C语言 十六进制与ascii码互转
  18. 皇视268四芯最新BIN谁有啊
  19. 梅特卡夫定律:社交网络的滚雪球效应
  20. 运用for 语句来计算 从1加到10的用法 C++

热门文章

  1. 你的跑步姿势正确吗? 教你正确跑步姿势 常识
  2. 基于Ventoy制作单个U盘引导Windows+Linux+黑苹果macOS
  3. java 发卡平台支付_ZFAKA一款免费开源的发卡系统搭建教程 (支持多种支付接口)...
  4. Python爬虫51job职位
  5. java实现微信公众号 模板推送
  6. 简单有效的通过js使用qrcode扫描二维码
  7. abel数值反演的matlab实现,abel变换数值反演的积分算子方法.pdf
  8. matlab maps 指北针和比例尺,第5步:制作地图(指北针、比例尺、图例).doc
  9. 阿里程序员常用的 15 款开发者工具
  10. Anaconda------环境管理