51Nod 1649 齐头并进
#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 齐头并进的更多相关文章
- 51nod 1649.齐头并进-最短路(Dijkstra)
1649 齐头并进 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 在一个叫奥斯汀的城市,有n个小镇(从1到n编号),这些小镇通过 ...
- 51nod 1649 齐头并进 (djikstra求最短路径,只用跑一次)
题目: 这道题有一个坑点:两种交通工具同时出发,中途不能停留在同一个小镇. 其实想通了就很简单,因为要么火车一步到达,要么汽车一步到达.不可能停留在同一个地方. 可是我还WA了好几次,蠢哭.想用BFS ...
- 51nod1649- 齐头并进-最短路
1649 齐头并进 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 在一个叫奥斯汀的城市,有n个小镇(从1到n编号),这些小镇通过 ...
- 【51Nod 1244】莫比乌斯函数之和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...
- 51Nod 1268 和为K的组合
51Nod 1268 和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...
- 51Nod 1428 活动安排问题
51Nod 1428 活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...
- 51Nod 1278 相离的圆
51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...
- 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...
- 【51Nod 1622】【算法马拉松 19C】集合对
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...
随机推荐
- AMD的ARM之路前景几何?
http://server.zdnet.com.cn/all-2129330.html#2129333 AMD将于2014年推出基于ARM架构的Opteron(皓龙)处理器,应该是最近一段时间在IT产 ...
- springmvc学习笔记(18)-json数据交互
springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...
- Apache Qpid 高可用集群
一.RHCS RHCS是Red Hat Cluster Suite(红帽子集群套件)的缩写.RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实 ...
- sql insert and update
1 二者的区别 insert是插入一条新的数据,它会创建一条新的记录:update是更新一条已经有的数据,它不会创建新的记录. update需要where来指示更新那条记录,否则会更新所有的记录. 2
- 使用C++11的thread取代QThread
因为在做的工程项目里使用了Qt,而实际上不涉及到屏幕显示,工程代码里使用了QThread,且没有使用Qt核心的信号与槽,为了以后移植准备使用更加通用的C++11 stl中的thread取代QThrea ...
- VC++ 对话框下使用工具栏
关于这一技术网上也有很多的记录,下面仅记录我测试OK的代码. 在CXXDlg.h中添加如下成员变量: CToolBar m_ToolBar; CBitmap m_bmpTool; 在CXXDlg ...
- springboot如何使用外部tomcat容器
一般情况spring-boot-starter-web是自带tomcat(即springboot内嵌tomcat),所以打包直接生成jar包,用java -jar命令就可以启动. 但,有时我们希望用w ...
- Codeforces Round #352 (Div. 2) C. Recycling Bottles
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 从零开始徒手撸一个vue的toast弹窗组件
相信普通的vue组件大家都会写,定义 -> 引入 -> 注册 -> 使用,行云流水,一气呵成,但是如果我们今天是要自定义一个弹窗组件呢? 首先,我们来分析一下弹窗组件的特性(需求): ...
- html5--6-24 css3前缀
html5--6-24 css3前缀 学习要点 掌握css3前缀的使用 CSS3目前很多新增属性尚未被W3C列为标准,对这些暂时未被公布为标准的属性,各家浏览器会在属性前加上前缀词,也将其称之为浏览器 ...