标签:des style c class blog code
Description
Input
Output
Sample Input
2 0 0 3 4 3 17 4 19 4 18 5 0
Sample Output
Scenario #1 Frog Distance = 5.000 Scenario #2 Frog Distance = 1.414
简单的最短路,二分+dij判断
#include<map> #include<set> #include<stack> #include<queue> #include<cmath> #include<vector> #include<cstdio> #include<string> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define inf 0x0f0f0f0f using namespace std; const int MAX=200+10; const double esp=1e-8; typedef pair<int,int>pii; priority_queue<pii,vector<pii>,greater<pii> >q; struct node { int id,cost; }; vector<node> stone[MAX]; int dist[MAX],n; bool vis[MAX]; double dis[MAX][MAX],xx[MAX],yy[MAX]; void dijkstra(int k) { for(int i=0;i<=n;i++) dist[i]=(i==k? 0 : 99999999); memset(vis,0,sizeof(vis)); q.push(make_pair(dist[k],k)); while(!q.empty()) { pii u=q.top(); q.pop(); int x=u.second; if(!vis[x]) { vis[x]=true; for (int i=0;i<stone[x].size();i++) { if(dist[stone[x][i].id]>dist[x]+stone[x][i].cost) { dist[stone[x][i].id]=dist[x]+stone[x][i].cost; q.push(make_pair(dist[stone[x][i].id],stone[x][i].id)); } } } } } void get_dist() { for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { dis[i][j]=sqrt((xx[i]-xx[j])*(xx[i]-xx[j])+(yy[i]-yy[j])*(yy[i]-yy[j])); } } void update(double st) { for (int i=0;i<=n;i++) stone[i].clear(); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { if(dis[i][j]-st>esp) { node temp; temp.id=j; temp.cost=1; stone[i].push_back(temp); temp.id=i; stone[j].push_back(temp); } else { node temp; temp.id=j; temp.cost=0; stone[i].push_back(temp); temp.id=i; stone[j].push_back(temp); } } } double find(double x,double y) { while (y-x>esp) { double m=x+(y-x)/2; update(m); dijkstra(1); if (dist[2]==0) y=m; else x=m; } return x; } int main() { int caset=0; while (scanf("%d",&n)!=EOF && n) { caset++; for (int i=1;i<=n;i++) { scanf("%lf%lf",&xx[i],&yy[i]); } get_dist(); double ans=find(0,dis[1][2]); printf("Scenario #%d\n",caset); printf("Frog Distance = %.3lf\n\n",ans); } return 0; }
poj 2253 Frogger,布布扣,bubuko.com
标签:des style c class blog code
原文地址:http://www.cnblogs.com/chensunrise/p/3745871.html