zoukankan      html  css  js  c++  java
  • UVA 10803 Thunder Mountain

    UVA_10803

        在建图的时候需要过滤掉长度大于10的边,然后用floyd求任意两点间的最短路,然后找到最短路中的最大值即可。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #define MAXD 110
    #define INF 1000000000
    int N;
    double f[MAXD][MAXD], x[MAXD], y[MAXD];
    double sqr(double x)
    {
    return x * x;
    }
    void init()
    {
    int i, j;
    scanf("%d", &N);
    for(i = 0; i < N; i ++)
    scanf("%lf%lf", &x[i], &y[i]);
    for(i = 0; i < N; i ++)
    for(j = 0; j < N; j ++)
    {
    if(i == j)
    f[i][j] = 0;
    else
    {
    f[i][j]= sqrt(sqr(x[i] - x[j]) + sqr(y[i] - y[j]));
    if(f[i][j] > 10.0)
    f[i][j] = INF;
    }
    }
    }
    void floyd()
    {
    int i, j, k;
    double ans;
    for(k = 0; k < N; k ++)
    for(i = 0; i < N; i ++)
    for(j = 0; j < N; j ++)
    if(f[i][k] + f[k][j] < f[i][j])
    f[i][j] = f[i][k] + f[k][j];
    ans = 0;
    for(i = 0; i < N; i ++)
    for(j = 0; j < N; j ++)
    if(f[i][j] > ans)
    ans = f[i][j];
    if(fabs(ans - INF) < 1)
    printf("Send Kurdy\n");
    else
    printf("%.4f\n", ans);
    }
    int main()
    {
    int t, tt;
    scanf("%d", &t);
    for(tt = 0; tt < t; tt ++)
    {
    init();
    printf("Case #%d:\n", tt + 1);
    floyd();
    printf("\n");
    }
    return 0;
    }


  • 相关阅读:
    技术一定要动手做一遍才算自已的
    终于提离职了,感觉如释重负
    自我评定与学习计划
    MYSQL---INSERT...SELECT...
    MYSQL---LIMIT
    SQL---having
    MYSQL---数据定义
    CSS---Block和inline元素对比
    CSS---清除浮动
    T-SQL---分页语句
  • 原文地址:https://www.cnblogs.com/staginner/p/2223944.html
Copyright © 2011-2022 走看看