HDU 2337
来源:互联网 发布:数据分析 主成分分析 编辑:程序博客网 时间:2024/04/29 02:24
二分+bfs:
#include<cstdio>#include<iostream>#include<cstring>#include<vector>#include<set>#include<queue>#include<algorithm>using namespace std;typedef pair<int, int> PII;#define xx first#define yy secondconst int maxn = 1000 + 5;const int dx[] = {-1, 0, 1, 0};const int dy[] = {0, 1, 0, -1};queue<PII> Q;int d[maxn][maxn];int dist[maxn][maxn];int N, X, Y;int sx, sy, ex, ey;int judge(int x, int y){return x >= 1 && x <= X && y >= 1 && y <=Y; }void bfs(){ while(!Q.empty()){ PII u = Q.front(); Q.pop(); for(int i = 0; i < 4; ++i){ int nx = u.xx + dx[i]; int ny = u.yy + dy[i]; if(judge(nx, ny) && dist[nx][ny] == -1){ dist[nx][ny] = dist[u.xx][u.yy] + 1; Q.push(PII(nx, ny)); } } }}int cal(int x){ while(!Q.empty()) Q.pop(); for(int i = 1; i <= X; ++i) for(int j = 1; j <= Y; ++j) d[i][j] = - 1; d[sx][sy] = 0; Q.push(PII(sx, sy)); while(!Q.empty()){ PII u = Q.front(); Q.pop(); if(u.xx == ex && u.yy == ey) return d[ex][ey]; for(int i = 0; i < 4; ++i){ int nx = u.xx + dx[i]; int ny = u.yy + dy[i]; if(judge(nx, ny) && d[nx][ny] == -1 && dist[nx][ny] >= x){ d[nx][ny] = d[u.xx][u.yy] + 1; Q.push(PII(nx, ny)); } } } return -1;}int main(){ int T; scanf("%d", &T); while(T--){ while(!Q.empty()) Q.pop(); memset(dist,-1,sizeof(dist)); scanf("%d%d%d", &N, &X, &Y); scanf("%d%d%d%d", &sx, &sy, &ex, &ey); ++sx, ++sy, ++ex, ++ey; while(N--){ int x, y; scanf("%d%d", &x, &y); ++x, ++y; dist[x][y] = 0; Q.push(PII(x, y)); } bfs(); if(sx == ex && sy == ey){ printf("%d 0\n", dist[sx][sy]); continue; } int x = 0, y = dist[sx][sy] + 1; while(x<y){ int mid = (x+y)/2; if(cal(mid) != -1) x = mid + 1; else y = mid; } printf("%d %d\n", x-1, cal(x-1)); } return 0;}
0 0
- HDU 2337
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- 享元模式
- mac一键删除所有数据
- 数据结构之堆(java)
- CXF动态调用webservice超时问题
- 写入缓存公共类
- HDU 2337
- Java连接PostgreSQL数据库(安装环境 + 简易测试代码)
- hadoop存储测试
- PS 修改图片上的文字内容但保留文字格式
- Android 下载网络url文件并显示进度
- maven Errors
- 谷歌修改host,修改host访问google,复制下面的IP,替换自己机器上面的hosts文件即可
- window.location.Reload()和window.location.href 区别
- Windows 10 TH2首个Cumulative Update发布,解决隐私设置问题