#include <iostream>
#include <algorithm>
#include <cstring>
//两遍迪杰斯特拉
#define INF 0xfffffff
using namespace std;
const int maxn = + ;
int rail[maxn][maxn];
int dis[maxn];
int vis[maxn]; void dij(int n, int u){
int i, j, p, Min;
memset(vis, , sizeof(vis));
for (int i = ; i <= n; i++)
dis[i] = rail[u][i];
vis[u] = ;
dis[u] = ; for (i = ; i < n; i++){
Min = INF;
for (j = ; j <= n; j++){
if (!vis[j] && dis[j] < Min){
p = j;
Min = dis[j];
}
}
if (Min == INF) return;
vis[p] = ;
for (j = ; j <= n; j++){
if (!vis[j] && dis[p] + rail[p][j] < dis[j]){
dis[j] = dis[p] + rail[p][j];
}
}
}
} int main(){
ios::sync_with_stdio(false);
fill(rail[], rail[] + maxn*maxn, INF);
int n, m;
cin >> n >> m;
if (m == ){
//没有铁路
cout << "-1" << endl;
return ;
}
for (int i = ; i < m; i++){
int x, y;
cin >> x >> y;
rail[x][y] = ;
rail[y][x] = ;
}
dij(n, );
int ans1 = dis[n];
if (ans1 == INF || m == (n*(n - ) / )){
//铁路没有答案,或者没有公路
cout << "-1" << endl;
return ;
} for (int i = ; i <= n; i++){
for (int j = + i; j <= n; j++){
if (rail[i][j] == ){
rail[i][j] = INF;
rail[j][i] = INF;
}
else{
rail[i][j] = ;
rail[j][i] = ;
}
}
}
dij(n, );
int ans2 = dis[n];
int ans = ans1 > ans2 ? ans1 : ans2;
cout << ans << endl; system("pause");
return ;
}

51Nod 1649 齐头并进的更多相关文章

  1. 51nod 1649.齐头并进-最短路(Dijkstra)

    1649 齐头并进 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 在一个叫奥斯汀的城市,有n个小镇(从1到n编号),这些小镇通过 ...

  2. 51nod 1649 齐头并进 (djikstra求最短路径,只用跑一次)

    题目: 这道题有一个坑点:两种交通工具同时出发,中途不能停留在同一个小镇. 其实想通了就很简单,因为要么火车一步到达,要么汽车一步到达.不可能停留在同一个地方. 可是我还WA了好几次,蠢哭.想用BFS ...

  3. 51nod1649- 齐头并进-最短路

    1649 齐头并进 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 在一个叫奥斯汀的城市,有n个小镇(从1到n编号),这些小镇通过 ...

  4. 【51Nod 1244】莫比乌斯函数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...

  5. 51Nod 1268 和为K的组合

    51Nod  1268  和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...

  6. 51Nod 1428 活动安排问题

    51Nod   1428  活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...

  7. 51Nod 1278 相离的圆

    51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...

  8. 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...

  9. 【51Nod 1622】【算法马拉松 19C】集合对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...

随机推荐

  1. 这个捕鱼游戏制作的真心不错,原创音乐,AV动作,让人流连忘返啊呵呵

     女生看完这篇文章后果断地命令男朋友打开电脑和手机 2014-10-10 茶娱饭后 本人纯屌丝宅男一名.专注游戏十年有余,玩过无数大大小小的游戏,对捕鱼游戏情有独钟.我不想说在捕鱼游戏方面有多专业 ...

  2. 一篇很好的讲解SIFT算法的文章

    http://blog.csdn.net/zddblog/article/details/7521424

  3. html使用代码大全

    <DIV style="FONT-SIZE: 9pt">1)贴图:<img src="图片地址">1)首行缩进2格:<p styl ...

  4. LINQ体验(18)——LINQ to SQL语句之视图和继承支持

    视图 我们使用视图和使用数据表类似,仅仅需将视图从"server资源管理器/数据库资源管理器"拖动到O/R 设计器上,自己主动能够创建基于这些视图的实体类.我们能够同操作数据表一样 ...

  5. 常用的sql命令

    1 mysql创建数据库 create database [database name]; 2 创建表 create table [table name]([first column name] [f ...

  6. elastica安装

    https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-targz.html

  7. redis07-----Redis持久化配置

    Redis持久化配置 持久化: 即把数据存储于断电后不会丢失的设备中,通常是硬盘. 常见的持久化方式: 主从:通过从服务器保存和持久化,如mongoDB的replication sets配置. 淘宝是 ...

  8. AndroidStudio——Android SDK

    前言 安卓的SDK包,跨过长城下载好的,分享出来一下~ Android Studio版本 | 3.4.1 下载地址 微云下载地址 | 链接:https://share.weiyun.com/5rm6l ...

  9. oracle自动统计信息

    在11g中,默认自动收集统计信息的时间为晚上10点(周一到周五,4个小时),早上6点(周六,周日,20个小时),   select a.window_name, a.repeat_interval,a ...

  10. Unable to instantiate receiver XXXXXX

    运行一个工程的时候时logcat中出现了“Unable to instantiate receiver XX..”. 检查后发现,由于是东拼西凑的代码,所以在Manifest文件里注册了Receive ...