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. switch语法之PHP

    $a = 100; switch ($a) { case 100: echo '满分'; break; case $a >=60: echo '及格'; break; }

  2. Proxy 模式

    在以下集中情况下可以用 Proxy模式解决问题: 1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy): 2)为网络上 ...

  3. mysql基础操作整理(一)

    显示当前数据库 mysql> select database(); +------------+ | database() | +------------+ | test | +-------- ...

  4. Transpose File

    Given a text file file.txt, transpose its content. You may assume that each row has the same number ...

  5. js定位navigator.geolocation

    一.简介 html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置. window.navigator.geolocation提供了3个方法分 ...

  6. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  7. js操作Cookie,实现历史浏览记录

    /** * history_teacher.jsp中的js,最近浏览名师 * @version: 1.0 * @author: mingming */ $(function(){ getHistory ...

  8. [HOWTO] Install Sphinx for A Script Pro

    Hi, Here's a small howto on installing Sphinx Search (http://sphinxsearch.com/) and configuring it t ...

  9. Lua 5.1 for Delphi 2010

    This is a Lua 5.1 Wrapper for Delphi 2009 and Delphi 2010 which automatically creates OOP callback f ...

  10. jQuery运维开发之第十七天

    JQuery 学习参考网址http://jquery.cuishifeng.cn/ python中叫模块,在DOM/BOM/Javascript中叫类库 现在的JQ版本有:1.x 2.x 3.x 建议 ...