POJ 1847:Tram
| Time Limit: 1000MS | Memory Limit: 30000K | |
| Total Submissions: 11771 | Accepted: 4301 | 
Description
the direction the switch is pointing. If the driver wants to go some other way, he/she has to manually change the switch.
When a driver has do drive from intersection A to the intersection B he/she tries to choose the route that will minimize the number of times he/she will have to change the switches manually.
Write a program that will calculate the minimal number of switch changes necessary to travel from intersection A to intersection B.
Input
Each of the following N lines contain a sequence of integers separated by a single blank character. First number in the i-th line, Ki (0 <= Ki <= N-1), represents the number of rails going out of the i-th intersection. Next Ki numbers represents the intersections
directly connected to the i-th intersection.Switch in the i-th intersection is initially pointing in the direction of the first intersection listed.
Output
Sample Input
3 2 1
2 2 3
2 3 1
2 1 2
Sample Output
0
这题的题意是给了N个交叉口,每个交叉口有自己能转到的交叉口。注意这里:First number in the i-th line, Ki (0 <= Ki <= N-1), represents the number of rails going out of the i-th intersection.即每一行的第二个数字代表该交叉口默认的通向,是不需要手动转的,剩下的交叉口想去的话都需要手动转一次。现在想要从A口走到B口,走的路程想要转的次数时最少的,问最少转的值。
每一行的第2个数字,其距离为0。其余的距离设置为1。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; int num;
int dis[1005][1005]; void init()
{
int i,j;
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
if(i==j)
{
dis[i][j]=0;
}
else
{
dis[i][j]=1005;
}
}
}
}
int main()
{
int i,j,k,i_num,x,y;
cin>>num>>x>>y; init();
for(i=1;i<=num;i++)
{
cin>>i_num;
int h;
for(j=1;j<=i_num;j++)
{
cin>>h;
if(j==1)//第一个数字代表原来的方向,不需要转
dis[i][h]=0;
else //之后代表要转
dis[i][h]=1;
}
}
for(k=1;k<=num;k++)
{
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
if(dis[i][k]+dis[k][j]<dis[i][j])
{
dis[i][j]=dis[i][k]+dis[k][j];
}
}
}
}
if(dis[x][y]>=1000)
cout<<-1<<endl;
else
cout<<dis[x][y]<<endl;
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 1847:Tram的更多相关文章
- POJ 1847 Tram (最短路径)
		POJ 1847 Tram (最短路径) Description Tram network in Zagreb consists of a number of intersections and ra ... 
- 最短路 || POJ 1847 Tram
		POJ 1847 最短路 每个点都有初始指向,问从起点到终点最少要改变多少次点的指向 *初始指向的那条边长度为0,其他的长度为1,表示要改变一次指向,然后最短路 =========高亮!!!===== ... 
- poj  1847   最短路简单题,dijkstra
		1.poj 1847 Tram 最短路 2.总结:用dijkstra做的,算出a到其它各个点要改向的次数.其它应该也可以. 题意: 有点难懂.n个结点,每个点可通向ki个相邻点,默认指向第一个 ... 
- POJ1847:Tram(最短路)
		Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20116 Accepted: 7491 题目链接:http:/ ... 
- POJ 3321:Apple Tree  +  HDU 3887:Counting Offspring(DFS序+树状数组)
		http://poj.org/problem?id=3321 http://acm.hdu.edu.cn/showproblem.php?pid=3887 POJ 3321: 题意:给出一棵根节点为1 ... 
- POJ 3252:Round Numbers
		POJ 3252:Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10099 Accepted: 36 ... 
- poj  1847 Tram
		http://poj.org/problem?id=1847 这道题题意不太容易理解,n个车站,起点a,终点b:问从起点到终点需要转换开关的最少次数 开始的那个点不需要转换开关 数据: 3 2 1// ... 
- [最短路径SPFA]  POJ 1847 Tram
		Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14630 Accepted: 5397 Description Tra ... 
- POJ 1847	 Tram (最短路)
		Tram 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/N Description Tram network in Zagreb ... 
随机推荐
- web.xml的配置过程中也需要注意顺序问题
			配置WEB.XML的配置文件过程中发现: 直接红叉,鼠标放在红叉出信息如下: cvc-complex-type.2.4.a: Invalid content was found starting wi ... 
- MongoDB 初始化数据同步
			MongoDB初始化数据同步: 副本集中的成员启动之后,就会检查自身的状态,确定是否可以从某个成员那里进行同步.如果不行的话,尝试从其他成员那里进行完整的数据复制. 这个过程就是初始化同步(initi ... 
- js加密(十四)mail.yw.gov.cn/ RSA
			1. url: http://mail.yw.gov.cn/ 2. target:登录js 3. 简单分析: 寻找加密js: 3.1 直接寻找加密的参数p是不好找的,所以我们试着去寻找一些更明显的参数 ... 
- 001、JAVA开发环境安装与eclipse软件第一印象
			折腾了快1个星期,一直没有成功装好JAVA环境,eclipse一直打不开,java环境配置的问题真是不得不吐槽一下,太烂了.今天反反复复折腾好久,终于搞定了.用的金山毒霸,方法如下: 一.打开金山毒霸 ... 
- (转)深入理解JVM—JVM内存模型
			原文地址:http://www.cnblogs.com/dingyingsi/p/3760447.html 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互 ... 
- HDU 1542 线段树离散化+扫描线 平面面积计算
			也是很久之前的题目,一直没做 做完之后觉得基本的离散化和扫描线还是不难的,由于本题要离散x点的坐标,最后要计算被覆盖的x轴上的长度,所以不能用普通的建树法,建树建到r-l==1的时候就停止,表示某段而 ... 
- MESI缓存一致性协议
			整理一下一些计算机的基础概念. 概念 MESI(Modified, Exclusive, Shared, Invalid) 也称 Illinois 协议, 由美帝UIUC(University of ... 
- WebApi发布IIS404
			1.确定访问路径有没有问题,路由的设置: 2.配置文件中要加 <modules runAllManagedModulesForAllRequests="true" /> ... 
- MacOS通过ssh连接基于Virtualbox的Ubuntu虚拟机
			以前总是用Windows软件putty进行ssh连接,今天尝试使用macos. 实验环境:主机:macos 10.15.3 客户机:Ubuntu 18.04 默认情况下,Ubuntu没有安装SSH,需 ... 
- oracle中设置主键
			1.创建表 .创建表 create table "c_user"( "id" number primary key, "username" ... 
