极其简单的最短路问题
极其简单的最短路问题
题目
小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数以万计的好朋友沿路祝贺,导致小X在通过某些路不得不耗费1的时间来和他们聊天,尽管他希望尽早见到小C,所以他希望找到一条最快时间到达电影院的路。
一开始小X在1号点,共有N个点,M条路,电影院为T号点。
输入
第一行2个正整数,分别为n,m,t
以下m行,每行3个数,表示连接的编号以及权值
(注意,可能会有重边)
输出
一行一个数,表示1到t的最短路
输入样例
10 12 6
3 9 2
6 9 2
6 2 1
3 1 1
1 9 2
2 8 2
7 10 1
7 2 1
10 0 1
8 1 1
1 5 2
3 7 2
输出样例
4
数据范围
30%:n<=10 m<=20
60%: n<=1000 m<=20000
100%: n<=5000000 m<=10000000
思路
这道题看起来是一道最短路题,但是如果用最短路做会超时,那怎么办呢?
由题目可得,边的权值只有可能是1或者2。
那么我们可以把权值为2的边转换为权值为1的两条边,比如这样:
1 − > 2 1->2 1−>2 变成 1 − > 3 − > 2 1->3->2 1−>3−>2
那么这样,我们就可以用 b f s bfs bfs来做了。
代码
#include<cstdio>
#include<queue>
using namespace std;
struct note
{int to,next;
}e[20000001];
int n,m,t,le[40000001],k,x,y,z,f[40000001];
bool in[40000001];
int read()//快读
{int ans=0;char c=getchar();while (c>='0'&&c<='9'){ans=ans*10+c-48;c=getchar();}return ans;
}
void jl(int xx,int yy)//建邻接表
{e[++k]=(note){yy,le[xx]};le[xx]=k;e[++k]=(note){xx,le[yy]};le[yy]=k;
}
void bfs()//bfs
{in[1]=1;queue<int>a;a.push(1);while (!a.empty()){int h=a.front();a.pop();for (int i=le[h];i;i=e[i].next)if (!in[e[i].to]){a.push(e[i].to);in[e[i].to]=1;f[e[i].to]=f[h]+1;}if (in[t]){printf("%d",f[t]);return ;}}
}
int main()
{n=read();m=read();t=read();//读入for (int i=1;i<=m;i++){x=read();y=read();z=read();//读入if (z==1) jl(x,y);//建邻接表else//把权值为二的边转化成两条边{jl(x,++n);jl(n,y);}}bfs();//bfsreturn 0;
}
极其简单的最短路问题相关推荐
- 【bfs】极其简单的最短路问题
极其简单的最短路问题 题目大意: 求最短路,权值只有1或2 原题: 题目描述 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数以万计 ...
- 【BFS】【图论】极其简单的最短路问题
题目: 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数以万计的好朋友沿路祝贺,导致小X在通过某些路不得不耗费1的时间来和他们聊天, ...
- 极其简单的最短路问题【BFS】【图论】
>Description 现在假设每条道路需要花费小X的时间为1,由于有数以万计的好朋友沿路祝贺,导致小X在通过某些路不得不耗费1的时间来和他们聊天,尽管他希望尽早见到小C,所以他希望找到一条最 ...
- 2716: 极其简单的最短路问题(spfa裸题 or bfs)
一场游戏一场空,最终 最初都由我掌控,好像一身从容,不曾有狼狈伤痛,可深夜一个人该如何相拥? 题目描述 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X ...
- Flash Builder4.7极其简单破解方法-三步搞定(亲测)
资讯类型: 转载 来源页面: http://weibo.com/2101024913/yvmR0D9Df 资讯原标题: 资讯原作者: 丿卓越丶星辰 翻译词数: 词 我的评论: 对这篇文你有啥看法,跟贴 ...
- JQuery插件让图片旋转任意角度且代码极其简单 - 摘自网友
JQuery插件让图片旋转任意角度且代码极其简单 2012-04-01 09:57:03 我来说两句 收藏 我要投稿 引入下方的jquery.rotate.js文件,然后通过 ...
- 有自学能力的人,赚钱极其简单—来福宝盒
如果说一个人连一点自学能力都没有,想通过互联网做生意赚钱是非常难的. 一.自学能力是什么? 一个人吸收接纳事物的能力,更明确说一个人在没有接受指导和教育的情况下掌握某种技能.为什么要有自学能力? 有自 ...
- 一个极其简单的用golang net写的tcpip echoserver
一个极其简单的用golang net写的tcpip echoserver 关键字:linux golang tcpip echoserver 虽然然效率不是很理想,但是可以给初学者参考 package ...
- Flash Builder4.7极其简单破解方法-三步搞定
Flash Builder4.7极其简单破解方法-三步搞定(亲测) 原方法适用于4.6版本,同样方法4.7完美破解,不敢独享 具体步骤如下: 1.到Adobe官网下载FlashBuilder 4.6, ...
最新文章
- 程序员入职锦囊妙计 --读书笔记
- Java synchronized 和 volatile 的区别
- stm32f103 低功耗调试笔记 低功耗模式下一直有个800多uA的电流
- POJ - 1087 A Plug for UNIX(最大流)
- 使用Docker Swarm搭建分布式爬虫集群
- html双击变成可编辑,jquery 实现双击编辑并保存
- Spark 2.2 Core :TimSort 的原理与源码分析
- python大漠插件多开_[求助,]用python调用大漠插件,注册好后调用出错.完全不会了...
- dataframe_转换日期格式
- 微信公众号文章的爬取(搜狗微信搜索)
- 802.11 ------ Beacon帧、Beacon Interval、TBTT、Listen Interval、TIM、DTIM
- 磨皮进阶之高低频全方位解析
- Mac苹果电脑怎么快速切换应用?
- 考题篇(6.2) 07 ❀ FortiGate ❀ Fortinet 网络安全专家 NSE 4
- html静态网站登陆验证,静态页面js加密URL密码验证
- 2020年美容师(中级)报名考试及美容师(中级)考试总结
- 360前端星计划学习-html
- UA OPTI570 量子力学28 原子结构的量子力学基础
- 图解TCP/IP读书笔记(一)
- 平稳性检验(描述性)与纯随机性检验