// UVa 534 - Frogger
#include <iostream>
#include <cmath>
#include <queue>
#include <string.h>
#include <stdio.h>
using namespace std;
struct point {
double x, y;
};
struct edge {
int i, j;
double d;
};
bool operator <(edge a, edge b) {
return a.d > b.d;
}
double dist(point p1, point p2) {
return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);
}
int main() {
int n, t = 0;
while (cin >> n && n) {
t++;
point rock[200];
int from[200];
double dst[200];
for (int i = 0; i < n; i++)
cin >> rock[i].x >> rock[i].y;
priority_queue<edge> q;
for (int i = 1; i < n; i++) {
edge e = { 0, i, dist(rock[0], rock[i]) };
q.push(e);
}
bool yet[200];
memset(yet, true, sizeof(yet));
yet[0] = false;
while (yet[1]) {
edge e;
do {
e = q.top();
q.pop();
} while (!yet[e.j]);
from[e.j] = e.i;
dst[e.j] = e.d;
yet[e.j] = false;
for (int i = 1; i < n; i++)
if (yet[i]) {
edge f = { e.j, i, dist(rock[e.j], rock[i]) };
q.push(f);
}
}
double sol = 0;
int i = 1;
while (i) {
sol = max(sol, dst[i]);
i = from[i];
}
printf("Scenario #%d\n", t);
printf("Frog Distance = %.3f\n", sqrt(sol));
printf("\n");
}
return 0;
}
Tuesday, June 9, 2015
UVa 534 - Frogger
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment