poj 2253 Frogger

来源:互联网 发布:广西广电网络多少钱 编辑:程序博客网 时间:2024/06/05 03:19

djstl;
反正不会读
求路径中最小的边。
简单易懂,不再解释。。
输出似乎要注意一下。。

#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>using namespace std;#define maxn 10010int n;struct sb{    int x;    int y;}node[maxn];double dis(double x1,double y1,double x2,double y2){    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}double way[maxn];bool vis[maxn];void djstl(){    for(int i=1;i<=n;i++)    {        way[i]=0x3f3f3f3f;        vis[i]=false;    }    way[1]=0;    int v=1;    for(int i=1;i<=n;i++)    {        double min1=0x3f3f3f3f;        for(int j=1;j<=n;j++)        {            if(vis[j]==false&&way[j]<min1)            {                v=j;                min1=way[j];            }        }        vis[v]=true;        if(v==2)            break;        for(int j=1;j<=n;j++)        {            if(vis[j]==false&&way[j]>max(way[v],dis(node[v].x,node[v].y,node[j].x,node[j].y)))            {                way[j]=max(way[v],dis(node[v].x,node[v].y,node[j].x,node[j].y));            }        }    }}int main(){    int num=1;    while(cin>>n&&n)    {        for(int i=1;i<=n;i++)        {            cin>>node[i].x>>node[i].y;        }        djstl();        printf("Scenario #%d\nFrog Distance = %.3f\n\n",num++,way[2]);    }    return 0;}
0 0
原创粉丝点击