poj 1383 Labyrinth 树的直径
题意:
给一个迷宫,其中任意两个可以走的点之间只有一条路,求在这个迷宫里最长能走多远。
分析:
求树的直径,两次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 树的直径相关推荐
- poj 1383 Labyrinth
题目连接 http://poj.org/problem?id=1383 Labyrinth Description The northern part of the Pyramid contains ...
- POJ 1849 Two(树的直径+思维)
题目链接:http://poj.org/problem?id=1849 题意是有n个点,n-1条边(树形图),在s点放两个机器人,问这两个机器人遍历完所有的点的最少花费(不用回到原点). ...
- poj 1985 Cow Marathon 【树的直径】
求树的直径 /* POJ:1985 Cow Marathon 2014/10/12/21:18 Yougth*/ #include <cstdio> #include <iostre ...
- 【POJ - 3310】Caterpillar(并查集判树+树的直径求树脊椎(bfs记录路径)+dfs判支链)
题干: An undirected graph is called a caterpillar if it is connected, has no cycles, and there is a pa ...
- 【POJ - 2631 】Roads in the North(树的直径)
题干: Building and maintaining roads among communities in the far North is an expensive business. With ...
- C++剑指offer:[POJ]2631 Roads in the North - 用树形DP的方式求出一棵树的直径
前言 此题是道很简单的题(做法不单一,不仅只有树形DP的方法) 做完了这道题才发现此题原来是一道求树的直径的题,也就是求树上两个节点的最大距离. 题目 问题 N(2692): [POJ2631]北极地 ...
- 0x63.图论 - 树的直径与最近公共祖先
目录 一.树的直径(Diameter) 1.树形DP求树的直径 2.两次BFS/DFS求树的直径 1.POJ 1985.Cow Marathon(DFS求树的直径模板题) 2.AcWing 350. ...
- 树的直径,树的最长路dp思想
dp一直弱死了,树型dp很多基本的题都不会,最近在刷树型dp的题,把关于树的最长路的思想总结一下: 树的直径:树中距离最远的两点间的距离. 下面说几道题: hdu 2196:对于树上(双向边)的每一个 ...
- 树的直径,树的重心,树的分冶
主要是利用了反证法: 假设 s-t这条路径为树的直径,或者称为树上的最长路 现有结论,从任意一点u出发搜到的最远的点一定是s.t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两 ...
最新文章
- 干货,Wireshark使用技巧-过滤规则
- mysql master slave_mysql master slave
- oracle job如何执行存储过程,oracle定时执行存储过程的job
- 免费LInux主机资源
- PowerDesigner反向工程 mysql
- Consider defining a bean of type ‘com.xg.stupro.service.StudentService‘ in your configuration.
- java传输对象_如何传输Java对象
- 学习笔记(08):MySQL数据库运维与管理-03-用户权限回收
- 微课|玩转Python轻松过二级(3.2节):元组与生成器推导式
- 2017 ICPC西安区域赛 A - XOR (线段树并线性基)
- WPF中StackPanel的尺寸的怪癖
- python绘制太阳花_Python绘制蟒蛇和太阳花
- 计算机程序设计艺术初读感
- 元素的显示、隐藏、遮罩
- 社交口才:处理好人际关系的七种谈话技巧
- Cover Letter 写作技巧
- C语言 十六进制与ascii码互转
- 皇视268四芯最新BIN谁有啊
- 梅特卡夫定律:社交网络的滚雪球效应
- 运用for 语句来计算 从1加到10的用法 C++
热门文章
- 你的跑步姿势正确吗? 教你正确跑步姿势 常识
- 基于Ventoy制作单个U盘引导Windows+Linux+黑苹果macOS
- java 发卡平台支付_ZFAKA一款免费开源的发卡系统搭建教程 (支持多种支付接口)...
- Python爬虫51job职位
- java实现微信公众号 模板推送
- 简单有效的通过js使用qrcode扫描二维码
- abel数值反演的matlab实现,abel变换数值反演的积分算子方法.pdf
- matlab maps 指北针和比例尺,第5步:制作地图(指北针、比例尺、图例).doc
- 阿里程序员常用的 15 款开发者工具
- Anaconda------环境管理