题意:表面乍一看output是输出最小值,但仔细研究可以发现,这个最小值是从点1到所有点所花时间的最小值,其实是访问这些节点中的最大值,因为只有访问了最长时间的那个点才算访问了所有点。所以求最短路之后求最大值。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std; const int maxn = + ;
const int inf = 0x3f3f3f3f;
int n, mp[maxn][maxn], dis[maxn];
bool vis[maxn];
inline int max( int a, int b ){
return a>b ? a:b;
} inline int min( int a, int b ){
return a<b ? a:b;
} inline int dij(){
memset( vis, , sizeof(vis) );
memset( dis, inf, sizeof(dis) );
dis[] = ;
for( int i=; i<n; i++ ){
int minid, MIN = inf;
for( int j=; j<=n; j++ ) if( !vis[j] && MIN>dis[j] ) MIN = dis[minid=j];
vis[minid] = ;
for( int j=; j<=n; j++ ) if( !vis[j] ) dis[j] = min( dis[j], dis[minid]+mp[minid][j] );
}
int res = -inf;
for( int i=; i<=n ;i++ )
res = max( res, dis[i] );
return res;
} int main(){
// freopen("in.txt", "r", stdin);
scanf("%d", &n);
for( int i=; i<=n; i++ )
for( int j=; j<i; j++ ){
char s[];
scanf("%s", s);
if( s[]=='x' ) mp[i][j] = mp[j][i] = inf;
else{
int w = ;
for( int k=; s[k]; k++ ){
w *= ;
w += s[k]-'';
}
mp[i][j] = mp[j][i] = w;
}
}
printf("%d\n", dij()); return ;
}

最新文章

  1. imp导入oracle的dmp备份数据
  2. C++使用throw抛出异常
  3. iis 管理员执行 aspnet_iis.exe
  4. cocos2d-x 多线程以及线程同步
  5. php对象当参数传递 &amp;&amp; php深复制和浅复制
  6. HTTP - 基本认证
  7. Asp.Net MVC ajax调用 .net 类库问题
  8. 模拟Vue之数据驱动2
  9. PHP学习笔记二十三【This】
  10. hive left outer join的问题
  11. 你真的懂offset与scroll吗?
  12. Linux下nc命令的使用
  13. 关闭shift中英文切换 英文代码/中文注释随意切换着写。
  14. 读懂jquery
  15. 浅谈C语言内存管理、内存泄露、堆栈
  16. Ubuntu下Eclipse无法添加Tomcat7解决方法
  17. 实践作业3:白盒测试----第三次小组会DAY8
  18. Tornado用户指引(一)-----------异步和非阻塞I/O
  19. 开发Android逆向工具
  20. php果然是世界上最好的语言

热门文章

  1. 关于 Object.defineProperty()
  2. 非mvn项目转为mvn项目并构建mvn私服
  3. JS面向对象的类 实例化与继承
  4. Java8 流式 API(`java.util.stream`)
  5. activiti学习7:spring和activiti进行整合
  6. 扫描工具Nikto-安全牛课堂网络安全之Web渗透测试练习记录
  7. Docker中nginx+tomcat实现负载均衡
  8. PowerBuilder学习笔记之14用户自定义对象
  9. Django 安装使用
  10. Gridview中的编辑模板与项模板的用法