10408: C.最少换乘

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit:
31  Solved: 8
[Submit][Status][Web
Board
]

Description

欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行。Dr. Kong决定利用暑假好好游览一番。。

年轻人旅游不怕辛苦,不怕劳累,只要费用低就行。但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车。

Dr. Kon买了一张旅游地图。他发现,市政部门为了方便游客,在各个旅游景点及宾馆,饭店等地方都设置了一些公交站并开通了一些单程线路。每条单程线路从某个公交站出发,依次途经若干个站,最终到达终点站。

但遗憾的是,从他住的宾馆所在站出发,有的景点可以直达,有的景点不能直达,则他可能要先乘某路BUS坐上几站,再下来换乘同一站的另一路BUS,
这样须经过几次换乘后才能到达要去的景点。

为了方便,假设对该城的所有公交站用1,2,……,N编号。Dr.
Kong所在位置的编号为1,他将要去的景点编号为N。

请你帮助Dr.
Kong寻找一个最优乘车方案,从住处到景点,中间换车的次数最少。

Input

第一行:     K             表示有多少组测试数据。(2≤k≤8)

接下来对每组测试数据:

第1行:     
 M  N       
表示有M条单程公交线路,共有N站。(1<=M<=100 1<N<=500)

第2~M+1行:每行描述一路公交线路信息,从左至右按运行顺序依次给出了该线路上的所有站号,相邻两个站号之间用一个空格隔开。

Output

对于每组测试数据,输出一行,如果无法乘坐任何线路从住处到达景点,则输出"N0",否则输出最少换车次数,输出0表示不需换车可以直达。

Sample Input

2
3 7
6 7
4 7 3 6
2 1 3 5
2 6
1 3 5
2 6 4 3

Sample Output

2
NO

此题属于常规的最短路问题,但建图特别坑
1、输入数据时需要先以字符串的形式输入(注意吸收回车)然后在转化为数字
2、转化为数字时注意车站号为2位三位数的情况
#include<stdio.h>
#include<string.h>
#define MAX 1100
#define inf 0x3ffffff
int n,m;
char s[MAX];
int vis[510];
int r[510];
int low[510],map[510][510];
void init()
{
int i,j;
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
if(i==j)
map[i][j]=0;
else
map[i][j]=inf;
}
}
}
void getmap()
{
int len,i,j,k,t;
int sum;
getchar();
while(n--)
{
gets(s);
t=0;
for(i=0;i<strlen(s);i++)
{
if(s[i]!=' ')
{
sum=0;
while(s[i]!=' '&&i<strlen(s))//考虑车站号为2或3位数
{
sum=sum*10+(s[i]-'0');
i++;
}
r[t++]=sum;
}
}
for(i=0;i<t-1;i++)
{
for(j=i+1;j<t;j++)
{
map[r[i]][r[j]]=1;
}
}
}
}
void dijkstra()
{
int i,j,min,next;
memset(vis,0,sizeof(vis));
for(i=1;i<=m;i++)
low[i]=map[1][i];
vis[1]=1;
for(i=1;i<m;i++)
{
min=inf;
for(j=1;j<=m;j++)
{
if(!vis[j]&&min>low[j])
{
min=low[j];
next=j;
}
}
vis[next]=1;
for(j=1;j<=m;j++)
{
if(!vis[j]&&low[j]>low[next]+map[next][j])
low[j]=low[next]+map[next][j];
}
}
if(low[m]!=inf)
printf("%d\n",low[m]-1);
else
printf("NO\n");
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
init();//初始化
getmap(); //建图
dijkstra();//求最短路
}
return 0;
}

  

zzuoj 10408: C.最少换乘【最短路dijkstra】的更多相关文章

  1. 第八届河南省赛C.最少换乘(最短路建图)

    C.最少换乘 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 94  Solved: 25 [Submit][Status][Web Board] De ...

  2. 华夏60 战斗机(最短路dijkstra)

    华夏60 战斗机(最短路dijkstra) 华夏60 超音速战斗机是当今世界上机动性能最先进的战斗机.战斗过程中的一个关键问题是如何在最短的时间内使飞机从当前的飞行高度和速度爬升/俯冲到指定的高度并达 ...

  3. hdu 2544 最短路 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...

  4. 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法

    图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...

  5. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  6. HUD.2544 最短路 (Dijkstra)

    HUD.2544 最短路 (Dijkstra) 题意分析 1表示起点,n表示起点(或者颠倒过来也可以) 建立无向图 从n或者1跑dij即可. 代码总览 #include <bits/stdc++ ...

  7. 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树)

    layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" ca ...

  8. 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)

    layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...

  9. 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)

    layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...

随机推荐

  1. 了解负载均衡 会话保持 session同步(转)

    一,什么负载均衡 一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西.但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量.在这种情 ...

  2. sendmail服务器的安装

    1.检查sendmail是否已安装: rpm -qa | grep sendmail   2.yum -y install sendmail    安装 yum -y remove sendmail  ...

  3. WIN7下运行hadoop程序报:Failed to locate the winutils binary in the hadoop binary path

    之前在mac上调试hadoop程序(mac之前配置过hadoop环境)一直都是正常的.因为工作需要,需要在windows上先调试该程序,然后再转到linux下.程序运行的过程中,报Failed to ...

  4. SQL Server Analysis Services 数据挖掘(1)

    来源: http://technet.microsoft.com/zh-cn/library/dn633476.aspx 假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢?这个功能在很多 电 ...

  5. Javascript中的函数(Function)与对象(Object)的关系

    今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞糊涂.他们之间到底是什么关系.当然也不除外当初的我. 注意:官方定义: 在Javascript中,每一个函数实际上都是一 ...

  6. 浏览器中的WebSocket("ws://127.0.0.1:9988");

    <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" ...

  7. PHP Mysql类【转】

    前几天没事在网上转发现了一个类,记录下来: <?php Class DB { private $link_id; private $handle; private $is_log; privat ...

  8. Expression Trees

    Expression Trees 只是想简单说下表达式树 - Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译 ...

  9. 如何完美打造Win8 Metro版IE10浏览器页面(转)

    Windows8 内置两种 Internet Explorer 10 (以下简称 IE10),一个是在桌面环境下使用的 IE10:视窗操作.可以支持各种插件(ActiveX):而另外一个则是在新的开始 ...

  10. hadoop 异常 INFO ipc.Client: Retrying connect to server:

    // :: INFO ipc.Client: Retrying connect to server: master/. Already tried , sleepTime= SECONDS) // : ...