Description

windy有一块矩形土地,被分为 N*M 块 1*1 的小格子。 有的格子含有障碍物。 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离。 如果从格子A不可以走到格子B,就没有距离。 如果格子X和格子Y有公共边,并且X和Y均不含有障碍物,就可以从X走到Y。 如果windy可以移走T块障碍物,求所有格子间的最大距离。 保证移走T块障碍物以后,至少有一个格子不含有障碍物。

Input

输入文件maxlength.in第一行包含三个整数,N M T。 接下来有N行,每行一个长度为M的字符串,'0'表示空格子,'1'表示该格子含有障碍物。

Output

输出文件maxlength.out包含一个浮点数,保留6位小数。

Sample Input

【输入样例一】
3 3 0
001
001
110

【输入样例二】
4 3 0
001
001
011
000

【输入样例三】
3 3 1
001
001
001

Sample Output

【输出样例一】
1.414214

【输出样例二】
3.605551

【输出样例三】
2.828427

 
连向空的边长为0,连向墙的边长为1
 
 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define N (100+5)
#define id(x,y) (x-1)*m+y
using namespace std;
int n,m,t,a[N][N];
double ans;
int head[N*N],num_edge;
int dis[][];
bool used[N*N];
int dx[]={,,-,,},dy[]={,,,,-};
char st[N];
struct node
{
int to,next,len;
}edge[N*N*N];
queue<int>q; void add(int u,int v,int l)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
edge[num_edge].len=l;
head[u]=num_edge;
} void Spfa(int x,int y)
{
int s=id(x,y);
dis[s][s]=;
used[s]=true;
q.push(s);
while (!q.empty())
{
int x=q.front(); q.pop();
for (int i=head[x];i!=;i=edge[i].next)
if (dis[s][x]+edge[i].len<dis[s][edge[i].to])
{
dis[s][edge[i].to]=dis[s][x]+edge[i].len;
if (!used[edge[i].to])
{
used[edge[i].to]=true;
q.push(edge[i].to);
}
}
used[x]=false;
}
} int main()
{
scanf("%d%d%d",&n,&m,&t);
for (int i=;i<=n;++i)
{
scanf("%s",st);
for (int j=;j<=m;++j)
a[i][j]=st[j-]-'';
}
for (int i=;i<=n;++i)
for (int j=;j<=m;++j)
for (int k=;k<=;++k)
if (i+dx[k]>= && i+dx[k]<=n && j+dy[k]>= && j+dy[k]<=m)
add(id(i,j) , id(i+dx[k],j+dy[k]) , a[i+dx[k]][j+dy[k]]); memset(dis,0x7f,sizeof(dis));
for (int i=;i<=n;++i)
for (int j=;j<=m;++j)
Spfa(i,j);
for (int i=;i<=n;++i)
for (int j=;j<=m;++j)
for (int k=;k<=n;++k)
for (int l=;l<=m;++l)
if ( dis[id(i,j)][id(k,l)] + (a[i][j]==)<=t )
ans=max(ans,sqrt((i-k)*(i-k)+(j-l)*(j-l)));
printf("%0.6lf",ans);
}

1295. [SCOI2009]最长距离【最短路】的更多相关文章

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

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

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

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

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

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

  4. 1295: [SCOI2009]最长距离

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

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

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

  6. bzoj 1295: [SCOI2009]最长距离 暴力+bfs最短路

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1295 题解: 对每个点暴力跑一遍bfs,看能够到达的最远位置,这里如果有障碍物则距离为1 ...

  7. [BZOJ 1295][SCOI2009]最长距离(SPFA+暴力)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1295 分析:很巧妙的一道spfa从搜索的角度是搜索在所有1中搜索删除哪T个1,对整个图询问,这 ...

  8. 【BZOJ】1295: [SCOI2009]最长距离(spfa+暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1295 咳咳..此题我不会做啊..一开始认为是多源,可是有移除物品的操作,所以不行. 此题的思想很巧妙 ...

  9. B1295 [SCOI2009]最长距离 最短路

    就是一道最短路的裸题,直接跑spfa就行了.(spfa死了) 最后在答案处判断是否障碍物太多,然后就直接找最大值就行. (数据特别水,我错误算法60) 题干: Description windy有一块 ...

随机推荐

  1. sql语句精确匹配一个字符串

    "select * from T_EDM_TableContent where  T_CSn = "+"'"+ID+"'", conn ‘I ...

  2. Cheatsheet: 2018 04.01 ~ 04.30

    Web Writing VS Code Extensions with TypeScript Docker How to write excellent Dockerfiles Raspberry P ...

  3. IntelliJ IDEA 2018.3 安装+永久激活[Windows]

    IntelliJ IDEA 作为一个优秀的Java开发环境,深受许多开发者喜爱,但是它的价格却贵得让人无法接受,这篇文章将介绍永久激活IntelliJ IDEA的方法(使用破解补丁). 系统环境:Wi ...

  4. 使用sql语句备份一张表

    如何使用sql语句复制一张表? 方法一:第一步:先建一张新表,新表的结构与老表相等. create table newtable like oldtable; 第二步:将老表中的值复制到新标中. in ...

  5. hdu 1880 魔咒词典 (字符串哈希)

    魔咒词典 Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. C++ STL:stack和queue

    http://blog.csdn.net/wallwind/article/details/6858634 http://blog.csdn.net/chao_xun/article/details/ ...

  7. 1..net mvc的原理概述

    请求过来,根据ip和端口,由iis服务器进行接收,如果是静态文件则直接返回文件内容,如果无法解析,则根据映射规则找到对应请求后缀 的ASPNET_ISAPI.dll处理程序集,交由其进行处理. 1.此 ...

  8. js画一棵树

    用纯js画一棵树.思路: 1.一棵树的图片,作为页面背景: 2.通过html5中的canvas画布进行遮罩: 3.定时每隔10ms,从下往上清除1px的遮罩: <!DOCTYPE html> ...

  9. jquery自动去除form表单中input框前后的空格

    1. 2. <script type="text/javascript"> $(document).ready(function() { $('#searchform ...

  10. mybatis大框架

    MyBatis   开源的数据持久化层框架 实体类与SQL语句之间建立映射关系 一:MyBatis前身是IBatis,本是Apache的一个开源的项目, 基于SQL语法,简单易学 ,是耦合度降低,方便 ...