Light oj 1002 Country Roads (Dijkstra)
题目连接:
http://www.lightoj.com/volume_showproblem.php?problem=1002
题目描述:
有n个城市,从0到n-1开始编号,n个城市之间有m条边,中心城市为t,问每个城市到中心城市的最小路径的花费,路径花费大小的定义为:一条路上花费最大的边的值。
解题思路:
Dijkstra的变形,用Dijkstra求出来的单源路径可以保证每条边都是最优的,所以最短路上的最长边就是所求。
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = ;
const int INF = 0x3f3f3f3f;
int map[maxn][maxn], dist[maxn];
void init ()
{
int i, j;
for (i=; i<maxn; i++)
for (j=; j<maxn; j++)
if (i==j)
map[i][j] = ;
else
map[i][j] = INF;
}
void dijkstra (int s, int n)
{
int i, j, vis[maxn];
memset (vis, , sizeof(vis)); for (i=; i<n; i++)
dist[i] = map[s][i];
vis[s] = ; for (i=; i<n; i++)
{
int mini = INF, index;
for (j=; j<n; j++)
if (!vis[j] && mini > dist[j])
{
mini = dist[j];
index = j;
}
if (mini == INF)
return ;
vis[index] = ;
for (j=; j<n; j++)
if (!vis[j])
{
dist[j] = min(dist[j], max(map[index][j],dist[index]));//重点
}
}
}
int main ()
{
int T, n, m, l = ;
scanf ("%d", &T);
while (T --)
{
init ();
scanf ("%d %d", &n, &m);
while (m --)
{
int u, v, w;
scanf ("%d %d %d", &u, &v, &w);
if (map[u][v] > w)//有重边,选最优
map[u][v] = map[v][u] = w;
}
int t;
scanf ("%d", &t);
dijkstra (t, n);
printf ("Case %d:\n", l ++);
for (int i=; i<n; i++)
if (dist[i] != INF)
printf ("%d\n", dist[i]);
else
printf ("Impossible\n");
}
return ;
}
Light oj 1002 Country Roads (Dijkstra)的更多相关文章
- 1002 - Country Roads(light oj)
1002 - Country Roads I am going to my home. There are many cities and many bi-directional roads betw ...
- Lightoj 1002 - Country Roads(prim算法)
I am going to my home. There are many cities and many bi-directional roads between them. The cities ...
- 【lightoj-1002】Country Roads(dijkstra变形)
light1002:传送门 [题目大意] n个点m条边,给一个源点,找出源点到其他点的‘最短路’ 定义:找出每条通路中最大的cost,这些最大的cost中找出一个最小的即为‘最短路’,dijkstra ...
- Light oj-1002 - Country Roads,迪杰斯特拉变形,不错不错~~
1002 - Co ...
- Light OJ 1316 A Wedding Party 最短路+状态压缩DP
题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...
- Light OJ 1114 Easily Readable 字典树
题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
- light oj 1007 Mathematically Hard (欧拉函数)
题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...
随机推荐
- Docker+Drone做Java/Tomcat的CI服务
1. 安装Docker(略过) 2. 编写docker-compose.yaml version: '2' services: drone-server: image: drone/drone:0.8 ...
- Oracle: 通过命令行下载安装文件
1. 导出oracle cookies 参考:https://blog.pythian.com/how-to-download-oracle-software-using-wget-or-curl/ ...
- ubuntu12.04安装搜狗输入法记录
http://blog.sina.com.cn/s/blog_66fa66650101akip.html 看了http://www.cnblogs.com/A-Song/archive/2013/04 ...
- 运维平台之CMDB系统建设
CMDB是运维的基础核心系统,所有的元数据和共享数据管理源,类似于业务中的账号平台的作用.本篇文章,我将从概念篇.模型篇.到实现与实施篇具体的进行阐述. CMDB也称配置管理,配置管理一直被认为是 I ...
- 高端技巧:怎样使用#define定义变量
Introduction 想在源文件里定义一个跟行号有关的变量,每次都手动输入实在是太慢了.本文介绍怎样使用宏定义来定义与行号有关的变量. 比如:我们想在源码的第10行定义A_10这种一个整形变量. ...
- Deepin-快捷方式设置
Linux无非就是命令命令命令,而不是点点点,下面介绍快捷方式 然后点击 最后找到快捷方式(鼠标滚轮下滑) 快捷方式自个看着修改
- Activity动态添加Fragment时遇到的问题
1.Activity动态调用代码 TitleFragement a = new TitleFragement(); getFragmentManager().beginTransacti ...
- Apache Flink 1.5.0 Release Announcement
Apache Flink: Apache Flink 1.5.0 Release Announcement https://flink.apache.org/news/2018/05/25/relea ...
- YTU 2982: 奔跑吧,小明!
2982: 奔跑吧,小明! 时间限制: 1 Sec 内存限制: 128 MB 提交: 36 解决: 2 题目描述 小明陷入一个充满陷阱的密道之中,现在他要逃脱这里!到达密道的出口即可离开这处绝境! ...
- YTU 2920: Shape系列-7
2921: Shape系列-7 时间限制: 1 Sec 内存限制: 128 MB 提交: 156 解决: 129 题目描述 小强做的Shape类在本次的测试中出了点状况,发现原来是其中的area函 ...