博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1125 Stockbroker Grapevine
阅读量:6605 次
发布时间:2019-06-24

本文共 1484 字,大约阅读时间需要 4 分钟。

题意:以任意顶点为起点,能够连通所有的节点,问你以哪个节点为起点时到所有的节点的最短路的最长路最短;

View Code
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int inf = 0x7fffffff;int map[124][124],N; int Dij( int start ){ int dis[124],hash[124]; for( int i = 0 ; i <= N ; i ++ ) { dis[i] = inf ; hash[i] = 0; } dis[start] = 0; for( int i = 1 ; i <= N ; i ++ ) { int min = inf ,t; for( int j = 1 ; j <= N ; j ++ ) { if( !hash[j] && min > dis[j] ) { min = dis[j] ; t = j; } } hash[t] = 1; for( int j = 1 ; j<= N ; j ++ ) { if( !hash[j] && map[t][j] != inf && dis[j] > map[t][j] + dis[t] ) dis[j] = dis[t] + map[t][j]; } } int ans = -1; for( int i = 1 ; i <= N ; i++ ) { if( dis[i] > ans ) { ans = dis[i]; // printf( "ans=%d\n",ans ); } } return ans;}void empty( ){ for( int i = 0; i <= N; i ++ ) { for( int j = 0 ; j <= N ; j ++ ) map[i][j] = inf; } }int main( ){ int n,num,T; while( scanf( "%d",&N ),N ) { empty(); for( int i = 1 ; i <= N ; i ++ ) { scanf( "%d",&n ); for( int j = 0 ; j < n ; j++ ) { scanf( "%d %d",&num,&T ); map[i][num] = T; } } int t = 0 , time = inf; for( int i = 1 ; i <= N ; i ++ ) { t = Dij( i ); if( time > t) { num = i ; time = t; } } if( time !=inf ) printf( "%d %d\n",num , time ); else printf( "disjoint\n" ); } //system( "pause" ); return 0;}

 

转载于:https://www.cnblogs.com/bo-tao/archive/2012/07/01/2571769.html

你可能感兴趣的文章
简明 Python 教程
查看>>
Photoshop操作指南
查看>>
用MPMoviePlayerController做在线音乐播放
查看>>
嵌入式开发之字符叠加---gb2313 国标码,utf8 国际码,unicode 无码
查看>>
Java查找算法——二分查找
查看>>
如何构建微服务架构
查看>>
【前端笔记】彻底理解变量与函数的声明提升
查看>>
Android 反编译利器,jadx 的高级技巧
查看>>
Mycat 读写分离 数据库分库分表 中间件 安装部署
查看>>
二叉搜索树(递归实现)
查看>>
Spring Retry重试机制
查看>>
Android官方架构组件LiveData: 观察者模式领域二三事
查看>>
[Android组件化]组件化数据分享
查看>>
你必须知道的HTTP基本概念
查看>>
当下拉列表数据过大时,该如何应对?
查看>>
使用OpenGrok搭建 可搜索可跳转的源码 阅读网站
查看>>
HTML5开发中的javascript闭包
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
ionic3 教程(二)登录页制作
查看>>
Python正则表达式初识(四)
查看>>