zoukankan      html  css  js  c++  java
  • COJ1219(建食堂)

    题目链接

    题目大意:给出n个公寓的互相距离,选择在其中一个公寓楼下建食堂,要求食堂到最远的公寓的距离最短。

    使用floyd求最短路,最短距离存在dist[N][N]中,然后求每行的最大值,再在这些最大值中求最小值。

    View Code
     1 #include <stdio.h>
     2 #define MAX(a,b) ((a)>(b)?(a):(b))
     3 #define MIN(a,b) ((a)<(b)?(a):(b))
     4 #define INF 0x7ffffff
     5 #define N 100
     6 int dist[N][N];
     7 int main()
     8 {
     9     int i,j,k,n,m,a,b,d,ans;
    10     while(~scanf("%d%d",&n,&m))
    11     {
    12         for(i=0;i<n;i++)
    13             for(j=i+1;j<n;j++)    dist[i][j]=dist[j][i]=INF;
    14         for(i=0;i<m;i++)
    15         {
    16             scanf("%d%d%d",&a,&b,&d);
    17             dist[a][b]=dist[b][a]=d;
    18         }
    19         for(k=0;k<n;k++)
    20             for(i=0;i<n;i++)
    21                 for(j=0;j<n;j++)
    22                     dist[i][j]=MIN(dist[i][j],dist[i][k]+dist[k][j]);
    23         for(i=0;i<n;i++)
    24             for(j=1;j<n;j++)    dist[i][0]=MAX(dist[i][0],dist[i][j]);
    25         ans=dist[0][0];
    26         for(i=1;i<n;i++)    ans=MIN(ans,dist[i][0]);
    27         if(ans==INF) printf("Can not\n");
    28         else    printf("%d\n",ans);
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    java基础 01
    c++11——模板的细节改进
    c++11——auto,decltype类型推导
    poj_1182 并查集
    poj_1988 并查集
    poj_1161 并查集
    poj_3067 树状数组
    poj_2182 线段树/树状数组
    poj_1190 树状数组
    动态规划
  • 原文地址:https://www.cnblogs.com/algorithms/p/2445357.html
Copyright © 2011-2022 走看看