poj1847 Tram 最短路Dijkstra
题目链接:http://poj.org/problem?id=1847
Dijkstra算法的模版应用
题意:给你N个点和起点终点,点与点有铁路,接下来的N行分别为点i的情况 第一个数字表示与该点连通的点的个数,接下来给该行的Ki个点,注意第一个所连的点为默认,通过的话不用改扳手,其余的点通过的话要改一次扳手,求从起点到终点改扳手的最小次数。
将不需要手动换方向转变为路径长度为0,
将需要手动换方向转变为路径长度为1即可
注意:
从第二行开始
每一行的第2个数为下一个默认的进入方向,所以不用手动换方向
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
#define INF 100100100
#define maxn 110
int n,A,B;
int G[maxn][maxn];
int dis[maxn*];
int s[maxn*];
void Dijkstra()
{
for(int i=;i<=n;i++)
{
dis[i]=G[A][i];
s[i]=;
}
s[A]=;
dis[A]=;
for(int i=;i<n;i++)
{
int Min=INF,u=A;
for(int j=;j<=n;j++)
{
if(dis[j]<INF && s[j]== && Min>dis[j])
{
u=j;
Min=dis[j];
}
}
if(Min>INF) break;
s[u]=; for(int k=;k<=n;k++)
{
if(s[k]== && G[u][k]<INF && dis[k]>dis[u]+G[u][k])
dis[k]=dis[u]+G[u][k];
}
}
}
int main()
{
while(scanf("%d%d%d",&n,&A,&B)!=EOF)
{
int num;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i==j) G[i][j]=;
else G[i][j]=INF;
for(int i=;i<=n;i++)
{
scanf("%d",&num);
int k,w;
for(int j=;j<=num;j++)
{
scanf("%d",&k);
w=;
if(j==) w=;
G[i][k]=w;
}
}
Dijkstra();
if(dis[B]>=INF)
cout<<"-1"<<endl;
else
cout<<dis[B]<<endl;
}
return ; }
poj1847 Tram 最短路Dijkstra的更多相关文章
- POJ-1847 Tram( 最短路 )
题目链接:http://poj.org/problem?id=1847 Description Tram network in Zagreb consists of a number of inter ...
- 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 ...
- 最短路Dijkstra算法的一些扩展问题
最短路Dijkstra算法的一些扩展问题 很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...
随机推荐
- iOS开发之数据存储之XML属性列表(plist)归档
1.概述 “归档”意思是持久化存储数据.plist文件是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary.NSArray.NSData.NSNumber等 ...
- ruby安装sass报错解决办法
ERROR: Could not find a valid gem 'sass' (>= 0), here is why: Unable to download data from http:/ ...
- 使用cmd命令打开Python文件式程序方法
首先:需要确定已编好的Python程序的存储路径:(即在哪个磁盘,哪个文件中) 其次:打开cmd命令,输入该程序所在磁盘,敲回车键:(例如其存储在E盘,则输入“E:”,敲回车键.) 然后:输入pyth ...
- docker使用Let’s Encrypt协议构建免费https协议
简介:我们可以把自己的image上传到dockerhub或者阿里云的docker镜像仓库,但在实际使用中我们很多时候都用的是自己的registry,便于内部的共享等等优点,docker镜像默认支持ht ...
- 解决虚拟机vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
虚拟机使用的是VMware Workstation,并且首次在虚拟机体验64 位系统.在新建好虚拟机,运行时候就出现了VMware Workstation 的提醒:此主机支持 Intel VT-x,但 ...
- 【webpack学习笔记(一)】流行的前端模块化工具webpack初探
从开发文件到生产文件 有一天我突然意识到一个问题,在使用react框架搭建应用时,我使用到了sass/less,JSX模版以及ES6的语法在编辑器下进行开发,使用这些写法是可以提高开发的效率.可是 ...
- 老李分享:JDK,JRE,JVM区别与联系
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- jsp的开发模式
JSP 存在两种 开发模式1.Model1 : JSP + JavaBean * 不适合开发业务逻辑特别复杂web应用 ----- 业务逻辑复杂,控制代码多,而在jsp中编写控制代码,十分不便 *JS ...
- 自行扩展 FineUIMvc 通知对话框(多个并排显示不重叠,支持最新的显示在最上方)
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 这篇文章我们将改造 FineUIMvc 默认的通知对话框,使得同时显示多个也不会重叠.并提前出一个公共的JS文件,供大家使用. ...
- Hadoop之RPC简单使用(远程过程调用协议)
一.RPC概述 RPC是指远程过程调用,也就是说两台不同的服务器(不受操作系统限制),一个应用部署在Linux-A上,一个应用部署在Windows-B或Linux-B上,若A想要调用B上的某个方法me ...