zoukankan      html  css  js  c++  java
  • POJ 2253 Frogger -- 最短路变形

    这题的坑点在POJ输出double不能用%.lf而要用%.f。。。真是神坑。

    题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值。

    算法:Dijkstra

    题目每次选择权值最小的边进行延伸访问,最坏情况下每条路径都要访问,复杂度O(n^2)

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #define Mod 1000000007
    using namespace std;
    #define N 207
    
    struct point
    {
        int x,y;
    }p[N];
    
    int n;
    double res,mini;
    double way[N][N],d[N];
    int vis[N];
    
    void Dijastra()
    {
        int i,j,k;
        for(i=1;i<=n;i++)
            d[i] = Mod;
        d[1] = 0;
        memset(vis,0,sizeof(vis));
        for(i=1;i<=n;i++)
        {
            mini = Mod;
            for(j=1;j<=n;j++)
            {
                if(!vis[j] && d[j] <= mini)
                {
                    k = j;
                    mini = d[j];
                }
            }
            vis[k] = 1;
            if(res < d[k] && d[k] != Mod)
                res = d[k];
            if(k == 2)
                return;
            for(j=1;j<=n;j++)
            {
                if(!vis[j])
                    d[j] = min(d[j],way[k][j]);
            }
        }
    }
    
    double dis(point ka,point kb)
    {
        return sqrt((ka.x-kb.x)*(ka.x-kb.x)+(ka.y-kb.y)*(ka.y-kb.y));
    }
    
    int main()
    {
        int cs = 1,i,j;
        while(scanf("%d",&n)!=EOF && n)
        {
            for(i=1;i<=n;i++)
                scanf("%d%d",&p[i].x,&p[i].y);
            for(i=1;i<=n;i++)
            {
                for(j=i;j<=n;j++)
                {
                    way[i][j] = way[j][i] = dis(p[i],p[j]);
                }
                way[i][i] = 0;
            }
            res = 0;
            Dijastra();
            printf("Scenario #%d
    ",cs++);
            printf("Frog Distance = %.3f
    
    ",res);  // %.3f
        }
        return 0;
    }
    View Code
  • 相关阅读:
    例5-6
    例5-5
    例5-4
    例4-5
    例4-4
    例4-3
    例4-2
    例3-11
    例3-10
    例3-9
  • 原文地址:https://www.cnblogs.com/whatbeg/p/3604068.html
Copyright © 2011-2022 走看看