51nod 1649.齐头并进-最短路(Dijkstra)
在一个叫奥斯汀的城市,有n个小镇(从1到n编号),这些小镇通过m条双向火车铁轨相连。当然某些小镇之间也有公路相连。为了保证每两个小镇之间的人可以方便的相互访问,市长就在那些没有铁轨直接相连的小镇之间建造了公路。在两个直接通过公路或者铁路相连的小镇之间移动,要花费一个小时的时间。
现在有一辆火车和一辆汽车同时从小镇1出发。他们都要前往小镇n,但是他们中途不能同时停在同一个小镇(但是可以同时停在小镇n)。火车只能走铁路,汽车只能走公路。
现在请来为火车和汽车分别设计一条线路;所有的公路或者铁路可以被多次使用。使得火车和汽车尽可能快的到达小镇n。即要求他们中最后到达小镇n的时间要最短。输出这个最短时间。(最后火车和汽车可以同时到达小镇n,也可以先后到达。)
样例解释:
在样例中,火车可以按照 1⟶3⟶4 行驶,汽车 1⟶2⟶4 按照
行驶,经过2小时后他们同时到过小镇4。
单组测试数据。
第一行有两个整数n 和 m (2≤n≤400, 0≤m≤n*(n-1)/2) ,表示小镇的数目和铁轨的数目。
接下来m行,每行有两个整数u 和 v,表示u和v之间有一条铁路。(1≤u,v≤n, u≠v)。
输入中保证两个小镇之间最多有一条铁路直接相连。
输出一个整数,表示答案,如果没有合法的路线规划,输出-1。
4 2
1 3
3 4
2 C++的运行时限为:1000 ms ,空间限制为:131072 KB
题意就是两个最短路中找最大的那一个。
这个题和hdu2544有点不一样的就是此题不一定有解,所以一开始保存当前节点的应该初始化为第一个点,否则会RE,本人亲测无数次,有点毒。
太菜太智障,板子都写错了。。。一个图就可以解决这个问题,转换一下就可以。因为有火车就没有公路。直接第二次更改一下值就可以。
代码:
//迪杰斯特拉玩一发
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<stdlib.h>
using namespace std;
const int N=;
const int maxn=1e7+1e6;
const int INF=0x3f3f3f3f;
int a[N][N];
int dist[maxn];
int vis[maxn];
int n,m;
void Dijkstra(){
int tmp,v;
memset(vis,,sizeof(vis));
memset(dist,,sizeof(dist));
for(int i=;i<=n;i++)
dist[i]=a[][i];
dist[]=;
vis[]=; //就是RE在这里。
for(int i=;i<=n;i++){
tmp=INF;
v=;
for(int j=;j<=n;j++){
if(!vis[j]&&tmp>dist[j]){
tmp=dist[j];
v=j;
}
}
vis[v]=;
for(int l=;l<=n;l++){
if(!vis[l])
dist[l]=min(dist[l],dist[v]+a[v][l]);
}
}
}
int main(){
while(~scanf("%d%d",&n,&m)){
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
a[i][j]=INF;
}
}
int h,k;
for(int i=;i<m;i++){
scanf("%d%d",&h,&k);
a[h][k]=a[k][h]=;
}
Dijkstra();
int ans=dist[n];
if(ans>=INF){printf("-1\n");break;}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(a[i][j]==)a[i][j]=INF;
else if(a[i][j]==INF)a[i][j]=;
}
}
Dijkstra();
ans=max(ans,dist[n]);
if(ans>=INF)printf("-1\n");
else printf("%d\n",ans);
}
return ;
}
太菜啦,要菜哭了==
加油,臭咸鱼。
51nod 1649.齐头并进-最短路(Dijkstra)的更多相关文章
- 51Nod 1649 齐头并进
#include <iostream> #include <algorithm> #include <cstring> //两遍迪杰斯特拉 #define INF ...
- 51nod 1649 齐头并进 (djikstra求最短路径,只用跑一次)
题目: 这道题有一个坑点:两种交通工具同时出发,中途不能停留在同一个小镇. 其实想通了就很简单,因为要么火车一步到达,要么汽车一步到达.不可能停留在同一个地方. 可是我还WA了好几次,蠢哭.想用BFS ...
- hdu 2544 最短路 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...
- 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法
图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...
- 单源最短路dijkstra算法&&优化史
一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...
- HUD.2544 最短路 (Dijkstra)
HUD.2544 最短路 (Dijkstra) 题意分析 1表示起点,n表示起点(或者颠倒过来也可以) 建立无向图 从n或者1跑dij即可. 代码总览 #include <bits/stdc++ ...
- 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树)
layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" ca ...
- 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)
layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...
- 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)
layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...
随机推荐
- 选择MariaDB的压缩数据引擎TokuDB
业务运用场景 数据基本不用update, 不频繁的范围查询 数据存储量较大(为以后准备) 选择占用磁盘较小的db 业务对数据库插入操作频繁,为避免影响其它业务,需要将直播业务的DB 独立出来,选择另外 ...
- .NET Core Linux 部署实践
部署环境:CentOS 7 x64 必要条件:当前用户有sudo权限 1. 安装依赖包sudo yum install libunwind libicu2. 下载.net core安装文件curl - ...
- 软工实践Alpha冲刺(6/10)
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 已经解决登录注册等基本功能的界面. 完成了主界面的基本布局 ...
- linux sort的用法
sort -n 表示按照数字 sort -k 表示第几列 sort -t : 表示按照:来分列 sort -r 表示从大到小排列
- 2-sat 学习笔记
一.问题描述 以你咕的模板题为例 题目描述 有\(n\)个布尔变量\(x_1\)~\(x_n\),另有\(m\)个需要满足的条件,每个条件的形式都是"\(x_i\)为true/false或\ ...
- busybox根文件系统使用记录
1.DHCP功能配置 1.1.配置Linux内核使能DHCP相关选项: [*]Networking support --> Networking support Networking optio ...
- vue数组对象修改触发视图更新
直接修改数组元素是无法触发视图更新的,如 this.array[0] = { name: 'meng', age: 22 } 修改array的length也无法触发视图更新,如 this.array. ...
- How to secure remote desktop connections using TLS/SSL
How to secure remote desktop connections using TLS/SSL based authentication Requirement When you ena ...
- Ajax基础知识 浅析(含php基础语法知识)
1.php基础语法 后缀名为.php的文件 (1) echo 向页面中输入字符串 <?php 所有php相关代码都要写在<?php ?>这个标签之中 echo &q ...
- 基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 3
继续 上一篇 的研究,结合 xen4.2.3 的代码分析,发现 xen4.2.3 的应用层工具库 tools 包含一个工具叫 libvchan ,其头文件描述如下: * This is a libra ...