zoukankan      html  css  js  c++  java
  • 【最短路/最小生成树】POJ 2253 Frogger

    POJ 2253 Frogger

    题意:给(n)个结点的坐标,两两之间均可连通。找出在所有从结点(1)到结点(2)的路径中,最大边的权值(距离)最小的那一条,输出这个权值(距离)。

    思路:

    POJ 1797 Heavy Transportation的镜像题……这里求的是最小生成树的最大边。

    int n, m;
    int p[maxn];
    double x[maxn], y[maxn];
    
    int find(int x) { return p[x] == x ? x : p[x] = find(p[x]); }
    
    struct Edge {
        double from, to;
        double dis;
        bool operator < (const Edge& t) const { return dis < t.dis; }
    }Edges[maxn * maxn];
    
    void solve() {
        for (int i = 0; i <= n; i++) p[i] = i;
    
        int num = 0;
        double ans = 0;
        for (int i = 1; i <= n; i++) cin >> x[i] >> y[i];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                ++num;
                Edges[num].from = i;
                Edges[num].to = j;
                if(i==j){Edge[num].dis=0;}
                else  Edges[num].dis = sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
            }
        }
        sort(Edges + 1, Edges + 1 + num);
        for(int i=1;i<=num;i++) {
            Edge& e = Edges[i];
            int nx = find(e.from);
            int ny = find(e.to);
            if (find(1) != find(2)) {
                ans = e.dis;
                p[nx] = ny;
            }
            else break;
        }
        printf("Frog Distance = %.3f
    
    ", ans);
    }
    
  • 相关阅读:
    tcp笔记
    sublime使用技巧
    mysql笔记
    ubuntu安装mysql
    正则表达式笔记
    网络编程笔记
    swoole安装异步reids
    mysql的时间存储格式
    nginx环境的搭建
    php的闭包函数use的使用
  • 原文地址:https://www.cnblogs.com/streamazure/p/12942525.html
Copyright © 2011-2022 走看看