csu---建食堂
来源:互联网 发布:不能在淘宝上买球藻 编辑:程序博客网 时间:2024/04/27 18:15
Description
给出n个公寓
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define maxx 1e9int n,m,dis[101][101];int floyd(){ for(int k=0; k<n; k++) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); } } } for(int i=0; i<n; i++) { dis[i][n]=0; for(int j=0; j<n; j++) { dis[i][n]=max(dis[i][n],dis[i][j]); if(dis[i][n]==maxx) return 0; } } return 1;}int main(){ while(~scanf("%d %d",&n,&m)) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(i==j) dis[i][j]=0; else dis[i][j]=maxx; } } int a,b,c; for(int i=0;i<m;i++) { scanf("%d %d %d",&a,&b,&c); dis[a][b]=c; dis[b][a]=c; } int ok=floyd(); int ans=maxx; for(int i=0;i<n;i++) ans=min(ans,dis[i][n]); if(ok) printf("%d\n",ans); else printf("Can not\n"); } return 0 ;}
的互相距离,选择在其中一个公寓楼下建食堂,要求食堂到最远的公寓的距离最短。
Input
每组数据第一行为两个正整数n,m。
n表示公寓数,m表示可彼此直达的公寓对。
接下来m行每行给出两个彼此可直达的公寓i、j和它们之间的距离k。
2 <= n <= 100,0 <= m < (n - 1) * n / 2,0 <= i,j < n,0 < k < 10000。
Output
输出一行一个整数表示建好的食堂到最远的公寓的距离。
若无法建一个能到所有公寓的食堂,输出can not。
Sample Input
3 20 2 00 1 95 33 4 82 4 10 2 0
Sample Output
直接上floyd算法吧
9Can not
阅读全文
0 0
- csu---建食堂
- 建食堂
- XMU1344建食堂
- CSU1219-建食堂-Floyd/BFS
- CSUOJ 1219 建食堂(两点之间最大距离最小)
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- 小笔记-java基础
- 八皇后问题
- 数据类型
- 用STL写的 通讯录
- Java内存模型
- csu---建食堂
- CF
- 使用python和c++调用摄像头
- zookeeper + dubbo 实现 helloworld
- Java自定义注解
- JavaScript-焦点事件
- 多标签分类
- 什么是事务,事务的四个特性是什么?有哪些隔离级别?
- window系统 ping不同虚拟机的某个已经开启的端口