博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOJ 1002 Country Roads
阅读量:5032 次
发布时间:2019-06-12

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

求最长路径的最小值,用优先队列的dijkstra

 

#include
#include
#include
#include
#include
using namespace std;const int MAXN = 1 << 9;int dist[MAXN], g[MAXN][MAXN];int n, m, t;const int inf = 0x3f3f3f3f;typedef pair
pii;void ReadGragh(){ for( int i = 0; i < n; i ++) for( int j = 0; j < n; j ++) { if( i != j) g[i][j] = inf; else g[i][j] = 0; } while( m --) { int u, v, w; scanf( "%d%d%d", &u, &v, &w); if( g[u][v] > w) g[u][v] = g[v][u] = w; } scanf( "%d", &t);}void Dijkstra(){ priority_queue< pii, vector
, greater
> q; for( int i = 0; i < n; i ++) dist[i] = inf; dist[t] = 0; q.push( make_pair(0, t)); while( !q.empty()) { pii u = q.top(); q.pop(); int x = u.second; if( dist[x] != u.first) continue; //±ÜÃâÖظ´¸üРfor( int i = 0; i < n; i ++) { if( i != x && dist[i] > max(dist[x], g[x][i]) ) { dist[i] = max(dist[x], g[x][i]); q.push( make_pair(dist[i], i)); } } }}int main(){ int T, cas; scanf( "%d", &T); for( cas = 1; cas <= T; cas ++) { scanf( "%d%d", &n, &m); ReadGragh(); Dijkstra(); printf( "Case %d:\n", cas); for( int i = 0; i < n; i ++) { if( dist[i] == inf) printf( "Impossible\n"); else printf( "%d\n", dist[i]); } } return 0;}

 

 

 

转载于:https://www.cnblogs.com/Yu2012/archive/2012/07/28/2613304.html

你可能感兴趣的文章
Flutter 贝塞尔曲线切割
查看>>
golang 的编译安装以及supervisord部署
查看>>
阿里架构师,讲述基于微服务的软件架构模式
查看>>
Eclipse导入maven项目时,Pom.xml文件报错处理方法
查看>>
01、JAVA开发准备
查看>>
txmpp
查看>>
【Github教程】史上最全github使用方法:github入门到精通
查看>>
抽象工厂模式(Abstract Factory)
查看>>
luogu1373 小a和uim之大逃离 (dp)
查看>>
Redis的Pub/Sub客户端实现
查看>>
springMVC入门(一)------springMVC基本概念与安装
查看>>
Sam做题记录
查看>>
[bzoj] 2453 维护数列 || 单点修改分块
查看>>
IIS版本变迁
查看>>
mybatis09--自连接一对多查询
查看>>
myeclipse10添加jQuery自动提示的方法
查看>>
【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。...
查看>>
软件工程APP进度更新
查看>>
Python 使用正则替换 re.sub
查看>>
CTF中那些脑洞大开的编码和加密
查看>>