相邻格子连双向边,如果一个点有障碍,那进它的边权就是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. PAT L3-016 二叉搜索树的结构

    https://pintia.cn/problem-sets/994805046380707840/problems/994805047903240192 二叉搜索树或者是一棵空树,或者是具有下列性质 ...

  2. Handling duplicate form submission in Spring MVC

    javaweb开发之防止表单重复提交 - u012843873的博客 - CSDN博客 https://blog.csdn.net/u012843873/article/details/5526212 ...

  3. XManager&XShell如何保存登录用户和登录密码

    Xshell配置ssh免密码登录 - qingfeng2556的博客 - CSDN博客https://blog.csdn.net/wuhenzhangxing/article/details/7948 ...

  4. tomcat7 server.xml max thread

    java - Tomcat - maxThreads vs maxConnections - Stack Overflowhttps://stackoverflow.com/questions/246 ...

  5. Linux的LiveCd与CD、DVD版

    https://blog.csdn.net/sun_168/article/details/6744401

  6. 【翻译】FluentValidation验证组件的使用

    由于本文是翻译,所以将原文原原本本的搬上来,大家看原文有什么不懂的也可以对照这里. 给出地址:https://fluentvalidation.net/ FluentValidation fluent ...

  7. oracle查看表结构命令desc

  8. innerText兼容问题处理

    IE.Safari.Opera和Chrome支持innerText属性.低版本的火狐浏览器不支持,但支持作用类似的textContent属性.textContent是DOM3级规定的一个属性,而且也得 ...

  9. java中的a++与++a的区别

    ++a:如果++在前就会先把a+1. a++:如果++在后就会先a然后在执行++的操作.代码: int a = 1; System.out.pritln(++a); //输出2 int s = 1; ...

  10. 日志与python日志组件logging

    1. 日志的相关概念: (1)日志的作用: a. 开发人员进行程序调试 b. 开发人员定位程序故障的位置 c. 运维人员观察应用运行是否正常 (2)日志的等级 a. DEBUG 最详细的日志,用于问题 ...