【bzoj1295】[SCOI2009]最长距离 最短路
来源:互联网 发布:c语言教程 编辑:程序博客网 时间:2024/05/19 14:16
貌似不难?枚举两个点,计算一下两个点最少去掉多少个方块,这个最短路就可以做了。
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<iostream>#include<algorithm>#define inf 1000000000#define maxn 910using namespace std;int dx[4]={0,1,0,-1};int dy[4]={1,0,-1,0};int a[31][31];int q1[maxn],q2[maxn],dis[31][31];bool vis[31][31];char s[50];int n,m,T;double ans;void bfs(int x,int y){for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) dis[i][j]=inf;int l=0,r=1;q1[1]=x;q2[1]=y;vis[x][y]=1;dis[x][y]=0;while (l!=r){l++;if (l==maxn) l=0;int x=q1[l],y=q2[l];for (int i=0;i<4;i++){int xx=x+dx[i],yy=y+dy[i];if (xx<1 || xx>n || yy<1 || yy>n) continue;if (dis[x][y]+a[x][y]<dis[xx][yy]){dis[xx][yy]=dis[x][y]+a[x][y];if (!vis[xx][yy]){r++;if (r==maxn) r=0;q1[r]=xx;q2[r]=yy;vis[xx][yy]=1;}}}vis[x][y]=0;}}int main(){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++) a[i][j]=s[j]-'0';}ans=0.0;for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) { bfs(i,j); for (int k=1;k<=n;k++) for (int p=1;p<=m;p++) if (dis[k][p]+a[k][p]<=T) ans=max(ans,sqrt((double)(k-i)*(k-i)+(p-j)*(p-j))); }printf("%.6lf\n",ans);return 0;}
0 0
- 【bzoj1295】[SCOI2009]最长距离 最短路
- BZOJ1295: [SCOI2009]最长距离
- bzoj1295: [SCOI2009]最长距离
- [bzoj1295]: [SCOI2009]最长距离
- bzoj1295: [SCOI2009]最长距离
- BZOJ1295 [SCOI2009]最长距离 智商
- [BZOJ1295][SCOI2009]最长距离(spfa)
- bzoj1295 [SCOI2009]最长距离(spfa)
- 【最短路径】【SCOI2009】最长距离
- 【SCOI2009】最长距离
- 1295: [SCOI2009]最长距离
- 1295: [SCOI2009]最长距离
- 1295: [SCOI2009]最长距离
- BZOJ 1295 最长距离(最短路)
- [BZOJ 1295][SCOI2009]最长距离
- 【BZOJ 1295】 [SCOI2009]最长距离
- 【bzoj1925】【SCOI2009】【最长距离】【spfa】
- 【bzoj 1295】[SCOI2009]最长距离
- CView视图类
- iptables进行端口转发
- hdu 1239 Calling Extraterrestrial Intelligence Again
- java 原型设计模式
- HDU——1303Doubles(水题,试手二分查找)
- 【bzoj1295】[SCOI2009]最长距离 最短路
- 数据结构之---树
- 线程生命周期图解
- linux 安装 killall命令
- Nginx之location 匹配规则详解
- POJ 2774 Long Long Message
- linux--ubuntu下Vim安装失败
- linux ls -l 详解
- 网站模板的应用