相邻格子连双向边,如果一个点有障碍,那进它的边权就是1,否则是0

这样的话,两点间的最短路+[起始点有障碍],就是从一个点走到另一个需要清除的障碍的个数

求出最短路后枚举这两个点就可以了

然而30*30还是太大跑不开floyd,只能写一个dijkstra

 #include<bits/stdc++.h>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pa;
const int maxn=,npm=; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int id[maxn][maxn];
int dis[npm][npm];
int N,M,T;
char can[npm][npm];
priority_queue<pa,vector<pa>,greater<pa> > q;
bool flag[npm]; inline void chkmin(int s,int x,int y){
if(dis[s][x]>y)
dis[s][x]=y,q.push(make_pair(y,x));
} inline void getdis(int s){
CLR(dis[s],);CLR(flag,);
dis[s][s]=;q.push(make_pair(,s));
while(!q.empty()){
int p=q.top().second;q.pop();
// printf("~%d %d %d\n",s,p,dis[s][p]);
if(flag[p]) continue;flag[p]=;
int i=(p-)/M+,j=p%M;if(!j) j=M;
if(i<N) chkmin(s,id[i+][j],dis[s][p]+can[i+][j]-'');
if(i>) chkmin(s,id[i-][j],dis[s][p]+can[i-][j]-'');
if(j<M) chkmin(s,id[i][j+],dis[s][p]+can[i][j+]-'');
if(j>) chkmin(s,id[i][j-],dis[s][p]+can[i][j-]-'');
}
} int main(){
//freopen("","r",stdin);
int i,j,k=;
N=rd(),M=rd(),T=rd();
for(i=;i<=N;i++){
scanf("%s",can[i]+);
for(j=;j<=M;j++)
id[i][j]=++k;
}
for(i=;i<=N;i++){
for(j=;j<=M;j++){
getdis(id[i][j]);
}
}
double ans=;
for(i=;i<=N;i++){
for(j=;j<=M;j++){
for(k=;k<=N;k++){
for(int l=;l<=M;l++){
if(dis[id[i][j]][id[k][l]]+can[i][j]-''<=T) ans=max(ans,sqrt(0.0+(k-i)*(k-i)+(l-j)*(l-j)));
}
}
}
}
printf("%.6lf\n",ans);
return ;
}

luogu4162 最长距离 (dijkstra)的更多相关文章

  1. [luogu4162 SCOI2009] 最长距离(最短路)

    传送门 Solution 题目是最长路,其实是最短路ヽ(ー_ー)ノ 把进入障碍点的边设为1,其他为0.枚举每个点为起点找距离<=T的点,更新答案 Code //By Menteur_Hxy #i ...

  2. POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)

    题目链接: http://poj.org/problem?id=2253 Description Freddy Frog is sitting on a stone in the middle of ...

  3. Dijkstra 单源最短路径算法

    Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...

  4. 最短路径算法-Dijkstra

    Dijkstra是解决单源最短路径的一般方法,属于一种贪婪算法. 所谓单源最短路径是指在一个赋权有向图中,从某一点出发,到另一点的最短路径. 以python代码为例,实现Dijkstra算法 1.数据 ...

  5. [板子]最小费用最大流(Dijkstra增广)

    最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...

  6. POJ 2253 Frogger(Dijkstra)

    传送门 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 39453   Accepted: 12691 Des ...

  7. POJ 2387 Til the Cows Come Home(最短路 Dijkstra/spfa)

    传送门 Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 46727   Acce ...

  8. Dijkstra 算法

    all the nodes should be carectorized into three groups: (visited, front, unknown) we should pay spec ...

  9. 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)

    题目链接 中文题,迪杰斯特拉最短路径算法模板题. #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f ],v ...

随机推荐

  1. source map

    一.source map 概述 我们在打包中,将开发环境中源代码经过压缩,去空格,babel编译转化,最终可以得到适用于生产环境的项目代码,这样处理后的项目代码和源代码之间差异性很大,会造成无法deb ...

  2. ES7的新特性

    ES7的新特性 ES7 特性: 1.Array.prototype.includes2.Exponentiation Operator(求幂运算) 一,Array.prototype.includes ...

  3. 对于vue和react“页面间”传递数据的理解误区

    前言 如果我们想要实现多个标签页之间的通信,可以使用localStorage.cookie等,但是能不能用vue或react呢? 结论 答案是NO,因为vue和react虽然可以在“多个”页面之间传递 ...

  4. Linux 下面 PG 的 uuid-ossp 包安装办法

    1. pgsql 安装 时报错, 如图示: 详细信息为: 执行SQL为: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" 错误纤细信息为: C ...

  5. SAP配置BOM的适用范围

    配置BOM中定义属性,单纯的编码要搞死人: 适合小批量周期短多品种

  6. python之路-字符串

    一.类型转换 a = 10 print(type(a)) # <class 'int'> d = str(a) # 把数字转换成str print(type(d)) # <class ...

  7. saltstack一

    Saltstack概述 Salt一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, 使其可以 ...

  8. 在IWMS中的分页效果

    第一步,你需要在后台修改你所要显示的新闻数目: 第二步,你需要把这段代码加到你需要分页的列表里边 代码: <%=config.TopAd%><asp:Literal id=" ...

  9. 莫烦theano学习自修第二天【激励函数】

    1. 代码如下: #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ import numpy as np import theano.tensor as T ...

  10. 学习 Spring (十三) AOP 配置

    Spring入门篇 学习笔记 Spring 所有的切面和通知器都必须放在一个 内(可以配置包含多个 元素),每一个 可以包含 pointcut, advisor 和 aspect 元素(它们必须按照这 ...