zoukankan      html  css  js  c++  java
  • poj 2253 frogger 最短路

    有N个点,青蛙A 在点1上,青蛙B在点2上,然后青蛙可以通过剩下的点来到达2点,求各个通路中最大的一段中的最小值~

    题目连接http://poj.org/problem?id=2253

    我的代码:

    View Code
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <math.h>
     4 #include<algorithm>
     5 #include <iostream>
     6 using namespace std;
     7 
     8 int n;
     9 
    10 struct node
    11 {
    12     int x,y;
    13 } p[10000];
    14 struct edge
    15 {
    16     int u,v;
    17     double dis;
    18 } e[100000];
    19 
    20 int set[10000];
    21 int cmp(struct edge a,struct edge b)
    22 {
    23     return a.dis < b.dis;
    24 }
    25 
    26 int find(int x)
    27 {
    28    if(set[x] != x)
    29    set[x] = find(set[x]);
    30    return set[x];
    31 }
    32 void merge(int a,int b)
    33 {
    34     int fa,fb;
    35     fa = find(a);
    36     fb = find(b);
    37         set[fa] = fb;
    38 
    39     return ;
    40 }
    41 int main()
    42 {
    43     int n;
    44     int cas;
    45     cas = 1;
    46     while(scanf("%d",&n)&&n)
    47     {
    48         int i,j,count;
    49 
    50         for(i = 0;i < n;i++)
    51         set[i] = i;
    52         for(i = 0; i < n; i++)
    53             scanf("%d %d",&p[i].x,&p[i].y);
    54         for(i = 0,count = 0; i < n; i++)
    55         {
    56             for(j = 0; j < i; j++)
    57             {
    58                 double a,b;
    59                 e[count].u = i;
    60                 e[count].v = j;
    61                 a = (p[i].x-p[j].x)*(p[i].x-p[j].x);
    62                 b = (p[i].y-p[j].y)*(p[i].y-p[j].y);
    63                 e[count++].dis = sqrt(a+b);
    64             }
    65         }
    66         double ans;
    67         ans = 0;
    68         sort(e,e+count,cmp);
    69 
    70         for(i = 0; i < count; i++)
    71         {
    72 
    73             if(find(0) == find(1))
    74             {
    75                 ans = e[i].dis;
    76                 break;
    77             }
    78             merge(e[i].u,e[i].v);
    79         }
    80         printf("Scenario #%d\nFrog Distance = %.3f\n\n",cas++,e[i-1].dis);
    81     }
    82     return 0;
    83 }
  • 相关阅读:
    View转化为bitmap
    Bitmap 与Drawable相互转换
    android studio 连接不到真机
    解决Android sync无法同步问题
    Stetho管理手机
    android sugar no such table
    android 建数据库的正确写法
    android JSON 数据解析
    android notification 理解
    android aidl 简单使用
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2764453.html
Copyright © 2011-2022 走看看