poj1502 MPI Maelstrom(单源最短路)
2024-08-24 03:48:32
题意:表面乍一看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 ;
}
最新文章
- imp导入oracle的dmp备份数据
- C++使用throw抛出异常
- iis 管理员执行 aspnet_iis.exe
- cocos2d-x 多线程以及线程同步
- php对象当参数传递 &;&; php深复制和浅复制
- HTTP - 基本认证
- Asp.Net MVC ajax调用 .net 类库问题
- 模拟Vue之数据驱动2
- PHP学习笔记二十三【This】
- hive left outer join的问题
- 你真的懂offset与scroll吗?
- Linux下nc命令的使用
- 关闭shift中英文切换 英文代码/中文注释随意切换着写。
- 读懂jquery
- 浅谈C语言内存管理、内存泄露、堆栈
- Ubuntu下Eclipse无法添加Tomcat7解决方法
- 实践作业3:白盒测试----第三次小组会DAY8
- Tornado用户指引(一)-----------异步和非阻塞I/O
- 开发Android逆向工具
- php果然是世界上最好的语言
热门文章
- 关于 Object.defineProperty()
- 非mvn项目转为mvn项目并构建mvn私服
- JS面向对象的类 实例化与继承
- Java8 流式 API(`java.util.stream`)
- activiti学习7:spring和activiti进行整合
- 扫描工具Nikto-安全牛课堂网络安全之Web渗透测试练习记录
- Docker中nginx+tomcat实现负载均衡
- PowerBuilder学习笔记之14用户自定义对象
- Django 安装使用
- Gridview中的编辑模板与项模板的用法