POJ 2253 Frogger dijkstra
2016-07-25 01:33
393 查看
就是从某点到某点找一条路径,使得这条路径上的最长的长度最短
这个问题,跟最短路的性质类似,所以也可以这样去搞,
if (!vis[j] && max(dist[k], graph[k][j]) < dist[j])
{
dist[j] = max(dist[k], graph[k][j]);
//path[j] = k;
}
就是dist[j]存储从出发点到该点的路径上的最长边,然后最后搜完就行
这个问题,跟最短路的性质类似,所以也可以这样去搞,
if (!vis[j] && max(dist[k], graph[k][j]) < dist[j])
{
dist[j] = max(dist[k], graph[k][j]);
//path[j] = k;
}
就是dist[j]存储从出发点到该点的路径上的最长边,然后最后搜完就行
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <queue> using namespace std; #define ll long long #define ull unsigned long long #define INF 0x3f3f3f3f #define maxn 1005 struct Node { int x, y; }; int Euclid(Node a, Node b) { return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y); } Node stone[maxn]; int graph[maxn][maxn]; //int path[maxn]; bool vis[maxn]; int dist[maxn]; int n, m; void dijkstra(int s) { memset(dist, 0x3f, sizeof(int)*maxn); memset(vis, false, sizeof(vis)); //memset(path, -1, sizeof(int)*maxn); dist[s] = 0; for (int i = 0; i < n; ++i) { int k = -1, minv = INF; for (int j = 0; j < n; ++j) { if (!vis[j] && dist[j] < minv) { minv = dist[j]; k = j; } } if (k == -1) break; vis[k] = true; //printf("k %d\n", k); for (int j = 0; j < n; ++j) { if (!vis[j] && max(dist[k], graph[k][j]) < dist[j]) { dist[j] = max(dist[k], graph[k][j]); //path[j] = k; } } } } int main() { //freopen("input.txt", "r", stdin); int kase = 0; while (scanf("%d", &n) != EOF) { if (n == 0) break; memset(graph, 0x3f, sizeof(int)*maxn*maxn); for (int i = 0; i < n; ++i) { scanf("%d%d", &stone[i].x, &stone[i].y); } for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { graph[i][j] = Euclid(stone[i], stone[j]); graph[j][i] = graph[i][j]; } } /*for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) printf("%d ", graph[i][j]); printf("\n"); }*/ dijkstra(0); int ans = dist[1]; printf("Scenario #%d\nFrog Distance = %.3f\n\n", ++kase, sqrt(ans*1.0)); } //system("pause"); //while (1); return 0; }
相关文章推荐
- dip和px区别联系 产生的根源和设计时的影响如何?是否屏幕密度的决定原因?
- 平面最近点对问题求解
- NodeJs——(16)用Nodejs 4.X版本,制作一个微博网站(多图,详细步骤)(已完成)
- xml序列化到本地以及使用Pull解析xml
- HDU 1535 Invitation Cards(最短路 spfa)
- activeMQ启动报--找不到或无法加载主类
- 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)
- Android SQLiteDatabase的使用
- "创业"半年
- Web---自己写的一个简单云相册~
- Web---自己写的一个简单云相册~
- 89. Gray Code
- java创建对象的四种方式
- Service的使用(四)前台服务与AIDL
- DPI和PPI区别
- HDU4349->Lucas定理
- POJ 1258 Agri-Net(最小生成树 Prim+Kruskal)
- POJ 1258 Agri-Net(最小生成树 Prim+Kruskal)
- 01.Bootstrap入门
- 在 Cent OS 7 上搭建带着 PHP 7 和 Memcached 的 LAMP