POJ 2607 Fire Station(Floyd)
2016-02-12 13:26
302 查看
Description
有n个城市,其中的m个城市有消防站,部分城市之间有道路通行,现要新建一个消防站以最小化每个城市距消防站的最大距离,输出这个最小距离
Input
第一行两个整数m和n分别表示已有消防站的城市个数和总城市个数,第二行m个整数表示有消防站的城市编号,之后每行三个整数u,v,c表示城市u和城市v之间有长度为c的道路,以文件尾结束道路输入(n<=500)
Output
输出最小化的城市距消防站最大距离
Sample Input
1 6
2
1 2 10
2 3 10
3 4 10
4 5 10
5 6 10
6 1 10
Sample Output
5
Solution
首先一遍Floyd求任意两城市之间最短距离,然后枚举每个城市,设其新建消防站后更新消防站距各城市最大距离,并更新答案
Code
有n个城市,其中的m个城市有消防站,部分城市之间有道路通行,现要新建一个消防站以最小化每个城市距消防站的最大距离,输出这个最小距离
Input
第一行两个整数m和n分别表示已有消防站的城市个数和总城市个数,第二行m个整数表示有消防站的城市编号,之后每行三个整数u,v,c表示城市u和城市v之间有长度为c的道路,以文件尾结束道路输入(n<=500)
Output
输出最小化的城市距消防站最大距离
Sample Input
1 6
2
1 2 10
2 3 10
3 4 10
4 5 10
5 6 10
6 1 10
Sample Output
5
Solution
首先一遍Floyd求任意两城市之间最短距离,然后枚举每个城市,设其新建消防站后更新消防站距各城市最大距离,并更新答案
Code
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; #define maxn 501 #define INF 0x3f3f3f3f int n,m,cost[maxn][maxn],dis[maxn],vis[maxn]; int main() { while(~scanf("%d%d",&m,&n)) { int u,v,c; for(int i=1;i<=n;i++) { dis[i]=INF;vis[i]=0; for(int j=1;j<=n;j++) cost[i][j]=i==j?0:INF; } for(int i=1;i<=m;i++) { scanf("%d",&u); dis[u]=0; vis[u]=1; } while(~scanf("%d%d%d",&u,&v,&c)) cost[u][v]=cost[v][u]=c; for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cost[i][j]=min(cost[i][j],cost[i][k]+cost[k][j]); for(int i=1;i<=n;i++) if(vis[i]) for(int j=1;j<=n;j++) dis[j]=min(dis[j],cost[i][j]); int ans=INF,pos; for(int i=1;i<=n;i++) { int temp=-1; for(int j=1;j<=n;j++) temp=max(temp,min(dis[j],cost[i][j])); if(ans>temp)ans=temp,pos=i; } printf("%d\n",pos); } return 0; }
相关文章推荐
- 257. Binary Tree Paths LeetCode
- PHP消息队列用法实例分析
- UIView不接受触摸事件的三种情况:
- java.lang.NoClassDefFoundError: ognl/PropertyAccessor解决的方法
- 简单工厂模式简单实例
- java 程序自动升级引起环境变量的问题
- 项目二-三数最大值
- [数据结构与算法分析] 二叉查找树的基础概念,插入以及删除
- 蓝桥杯 历届试题 核桃的数量
- HDOJ 5408 Conturbatio (双线段树+单点更新+区间和)
- 14. Longest Common Prefix LeetCode
- 网络层提供的两种服务——虚电路服务和数据报服务
- 编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。
- HDU 3667 Transportation(最小费用最大流)
- bzoj:2424: [HAOI2010]订货
- 关于冒泡排序的最简单方法和进一步的优化
- PHP共享内存用法实例分析
- 关于冒泡排序的最简单方法和进一步的优化
- [110624]隙间樱花与谎言都市(すきま桜とうその都会)【v1.13汉化硬盘版】[带全CG存档&攻略+日文原版文
- 什么是神经网络或者微粒群算法所说的陷入 局部极小值?局部极小值是什么?