bfs最短路。

写的真丑。。。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
const int maxn = 50;
const int INF = 0x3f3f3f3f;
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1}; int n,m,T;
int a[maxn][maxn],id[maxn][maxn],vid;
char s[maxn];
int xx,x2,yy,y2,h,d[1000][maxn][maxn];
int ans;
double res; struct Point {
int x,y;
} q[1000]; void bfs(int x,int y) {
h=id[x][y]=++vid;
int l=0,r=1;
q[0].x=x; q[0].y=y;
if(a[x][y]) d[h][x][y]=1;
else d[h][x][y]=0;
while(l<r) {
xx=q[l].x,yy=q[l].y; l++;
for(int i=0;i<4;i++) {
x2=xx+dx[i];
y2=yy+dy[i];
if(x2<1 || x2>n || y2<1 || y2>m) continue;
if(a[x2][y2]) {
if(d[h][x2][y2] > d[h][xx][yy]+1) {
d[h][x2][y2]=d[h][xx][yy]+1;
if(d[h][x2][y2]<=T) {
q[r].x=x2;
q[r].y=y2;
r++;
}
}
}
else if(d[h][x2][y2]>d[h][xx][yy]) {
d[h][x2][y2]=d[h][xx][yy];
if(d[h][x2][y2]<=T) {
q[r].x=x2;
q[r].y=y2;
r++;
}
}
}
}
} inline int sqr(int x) {
return x*x;
} int cal(int x1,int y1,int x2,int y2) {
return sqr(x1-x2)+sqr(y1-y2);
} int main() {
memset(d,0x3f,sizeof(d));
scanf("%d%d%d",&n,&m,&T);
for(int i=1;i<=n;i++) {
scanf("%s",s+1);
for(int j=1;j<=m;j++) if(s[j]=='1') a[i][j]=1;
else a[i][j]=0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
bfs(i,j);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) {
h=id[i][j];
for(int x=1;x<=n;x++)
for(int y=1;y<=m;y++)
if(d[h][x][y]<=T) ans=max(ans,cal(i,j,x,y));
}
res=sqrt(ans);
printf("%0.6f\n",res);
return 0;
}

bzoj1295: [SCOI2009]最长距离的更多相关文章

  1. [BZOJ1295][SCOI2009]最长距离 最短路+枚举

    1295: [SCOI2009]最长距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1683  Solved: 912[Submit][Statu ...

  2. BZOJ1295 [SCOI2009]最长距离 最短路 SPFA

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1295 题意概括 有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果 ...

  3. 【spfa】bzoj1295 [SCOI2009]最长距离

    题意:给你一个n*m的点阵.有些点是障碍,求一个欧几里得距离最大的点对(A,B),使得在移走的障碍≤T的情况下,可以从A走到B. 建图,跑n*m次spfa,求出从 每个点 出发到 其他所有点 的 经过 ...

  4. 题解 [BZOJ1295][SCOI2009] 最长距离

    题面 解析 \(n\)只有\(30\)可以直接枚举每个矩形, 判断他们的左上角到右下角或右上角到左上角的最短路是否小于\(T\). 最短路可以用\(dijkstra\). 一开始想用\(DP\)写最短 ...

  5. 【BZOJ1295】[SCOI2009]最长距离(最短路)

    [BZOJ1295][SCOI2009]最长距离(最短路) 题面 BZOJ 洛谷 题解 这题很妙啊. 我们枚举一个点,只需要考虑到他的最远点就行了,显然只需要考虑一个点即可.那么这两个点之前联通的最小 ...

  6. BZOJ 1295: [SCOI2009]最长距离 spfa

    1295: [SCOI2009]最长距离 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1295 Description windy有一块 ...

  7. bzoj 1295: [SCOI2009]最长距离

    题目链接 1295: [SCOI2009]最长距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1165  Solved: 619[Submit][ ...

  8. BZOJ 1295: [SCOI2009]最长距离( 最短路 )

    把障碍点看做点(边)权为1, 其他为0. 对于每个点跑spfa, 然后和它距离在T以内的就可以更新答案 ------------------------------------------------ ...

  9. 1295: [SCOI2009]最长距离

    1295: [SCOI2009]最长距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 960  Solved: 498[Submit][Status ...

随机推荐

  1. Linux下通过shell脚本创建账户

    当我们在linux平台上开发一些项目时,或者有一些项目是需要部署到linux系统上时,有时候会涉及到linux上的特定的账户,例如有一些项目需要运行在某些特定的账户下,或者有时候需要在全新的环境上搭建 ...

  2. 一个汉字的ASCII编码&#12288;

    一个汉字的ASCII编码:  

  3. Python urllib2 模块学习笔记

    2015.3.6  urllib2的使用方法大致如下 # 定制Handler处理函数 opener = urllib2.build_opener(ProxyHandler, HTTPHandler) ...

  4. Spark Streaming揭秘 Day17 资源动态分配

    Spark Streaming揭秘 Day17 资源动态分配 今天,让我们研究一下一个在Spark中非常重要的特性:资源动态分配. 为什么要动态分配?于Spark不断运行,对资源也有不小的消耗,在默认 ...

  5. Linux ps 命令获取查询结果中的单列信息

    1.查看所有进程信息,但是只想获取COMMAND列的值 SDCxM-SDCAM-root-root> ps auxUSER       PID %CPU %MEM    VSZ   RSS TT ...

  6. Qt+MinGW+OpenCV开发环境在win7系统下的搭建(最新20140423)

    1 搭建环境 (1)联想Y470笔记本电脑,win7操作系统 (2)Qt 5.2.1 Open Source :(Qt Online installer for Window(9MB),即下载页面最上 ...

  7. jsp日期控件My97DatePicker的使用

    My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 1.下载My97DatePicker组件包 2.将My97DatePicker包放在项目WebContent目录下 3.在页面 ...

  8. MVC视图引擎

    1.视图引擎:把视图解析成浏览器可执行的html代码 2.aspx视图: <%=表达式%>: <% C#代码段 %>: 3.razor视图: @(表达式):@ViewData[ ...

  9. [转]用Python做一个自动生成读表代码的小脚本

    写在开始(本片文章不是写给小白的,至少你应该知道一些常识!) 大家在Unity开发中,肯定会把一些数据放到配置文件中,尤其是大一点的项目,每次开发一个新功能的时候,都要重复的写那些读表代码.非常烦.来 ...

  10. 解决WIN8 磁盘100 活动占用100% win8硬盘一直响

    一.先看最终效果: 二.再说解决办法:   1.任务管理器关闭进程 taskhost.exe和类似于taskhostxx.exe开头的进程. 2.在电源管理里面设置2分钟不使用硬盘则关闭硬盘,看我的截 ...