zoukankan      html  css  js  c++  java
  • USACO 2.4 CowTours

    mark:题意不是很好懂的样子。先用floyd求最短路,再枚举两个块的每条边。。。细节要注意,另外要用double。。。2A,图论我果然很弱啊。

    代码:

     1 # include <stdio.h>
     2 # include <string.h>
     3 # include <math.h>
     4 
     5 
     6 int n ;
     7 int x[200], y[200] ;
     8 double dp[200], g[200][200], INF = 1e9, ans ;
     9 char gra[200][200] ;
    10 
    11 
    12 double dist(double a, double b, double c, double d){return sqrt((a-c)*(a-c)+(b-d)*(b-d)) ;}
    13 void floyd()
    14 {
    15     int i, j, k ;
    16     for (k = 0 ; k < n ;k++)
    17         for (i = 0 ; i < n ; i++)
    18             for (j = 0 ; j < n ; j++)
    19                 if (g[i][j] > g[i][k]+g[k][j])
    20                     g[i][j] = g[i][k]+g[k][j] ;
    21     memset (dp, 0, sizeof(dp)) ;
    22     ans = 0 ;
    23     for (i = 0 ; i < n ; i++)
    24     {
    25         for (j = 0 ; j < n ; j++) if (i!=j && g[i][j] < INF && g[i][j] > dp[i])
    26             dp[i] = g[i][j] ;
    27         if (dp[i] > ans) ans = dp[i] ;
    28     }
    29 }
    30 
    31 
    32 int main ()
    33 {
    34     int i, j ;
    35     double buff, d ;
    36     
    37     freopen ("cowtour.in", "r", stdin) ;
    38     freopen ("cowtour.out", "w", stdout) ;
    39     
    40     while (~scanf ("%d%*c", &n))
    41     {
    42         for (i = 0 ; i < n ; i++)
    43             scanf ("%d %d%*c", &x[i], &y[i]) ;
    44         for (i = 0 ; i < n ; i++)
    45             scanf ("%s", gra[i]) ;
    46         for (i = 0 ; i < n ; i++)
    47             for (j = 0 ; j < n ; j++)
    48                 if (gra[i][j] == '1')
    49                     g[i][j] = dist(x[i], y[i], x[j], y[j]) ;
    50                 else g[i][j] = INF ;
    51         floyd() ;
    52         buff = INF ;
    53         for (i = 0 ; i < n; i++)
    54             for (j = i+1 ; j < n ; j++) if (g[i][j] >= INF)
    55             {
    56                 d = dp[i]+dp[j]+dist(x[i],y[i],x[j],y[j]) ;
    57                 if (d < buff) buff = d ;
    58             }
    59         if (buff > ans) ans = buff ;
    60         printf ("%lf
    ", ans) ;
    61     }
    62     return 0 ;
    63 }
  • 相关阅读:
    自绘标题栏
    显示驱动相关 -- DrvEscape和ExtEscape
    Delphi 直接打印代码(不需要装打印机驱动)
    在TCanvas上画背景透明的矩形
    写作套路中的立功,立言,立德
    python入门(Python和Pycharm安装)
    delphi CxGrid用法总结(63问)
    如何安装inf类型驱动程序 inno
    PHP-SQL Server
    Exchange Tech Issues 参考网站
  • 原文地址:https://www.cnblogs.com/lzsz1212/p/3170764.html
Copyright © 2011-2022 走看看