极其简单的最短路问题

题目

小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 − &gt; 2 1-&gt;2 1−>2 变成 1 − &gt; 3 − &gt; 2 1-&gt;3-&gt;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;
}

极其简单的最短路问题相关推荐

  1. 【bfs】极其简单的最短路问题

    极其简单的最短路问题 题目大意: 求最短路,权值只有1或2 原题: 题目描述 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数以万计 ...

  2. 【BFS】【图论】极其简单的最短路问题

    题目: 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数以万计的好朋友沿路祝贺,导致小X在通过某些路不得不耗费1的时间来和他们聊天, ...

  3. 极其简单的最短路问题【BFS】【图论】

    >Description 现在假设每条道路需要花费小X的时间为1,由于有数以万计的好朋友沿路祝贺,导致小X在通过某些路不得不耗费1的时间来和他们聊天,尽管他希望尽早见到小C,所以他希望找到一条最 ...

  4. 2716: 极其简单的最短路问题(spfa裸题 or bfs)

    一场游戏一场空,最终 最初都由我掌控,好像一身从容,不曾有狼狈伤痛,可深夜一个人该如何相拥? 题目描述 小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X ...

  5. Flash Builder4.7极其简单破解方法-三步搞定(亲测)

    资讯类型: 转载 来源页面: http://weibo.com/2101024913/yvmR0D9Df 资讯原标题: 资讯原作者: 丿卓越丶星辰 翻译词数: 词 我的评论: 对这篇文你有啥看法,跟贴 ...

  6. JQuery插件让图片旋转任意角度且代码极其简单 - 摘自网友

    JQuery插件让图片旋转任意角度且代码极其简单 2012-04-01 09:57:03     我来说两句       收藏    我要投稿 引入下方的jquery.rotate.js文件,然后通过 ...

  7. 有自学能力的人,赚钱极其简单—来福宝盒

    如果说一个人连一点自学能力都没有,想通过互联网做生意赚钱是非常难的. 一.自学能力是什么? 一个人吸收接纳事物的能力,更明确说一个人在没有接受指导和教育的情况下掌握某种技能.为什么要有自学能力? 有自 ...

  8. 一个极其简单的用golang net写的tcpip echoserver

    一个极其简单的用golang net写的tcpip echoserver 关键字:linux golang tcpip echoserver 虽然然效率不是很理想,但是可以给初学者参考 package ...

  9. Flash Builder4.7极其简单破解方法-三步搞定

    Flash Builder4.7极其简单破解方法-三步搞定(亲测) 原方法适用于4.6版本,同样方法4.7完美破解,不敢独享 具体步骤如下: 1.到Adobe官网下载FlashBuilder 4.6, ...

最新文章

  1. 程序员入职锦囊妙计 --读书笔记
  2. Java synchronized 和 volatile 的区别
  3. stm32f103 低功耗调试笔记 低功耗模式下一直有个800多uA的电流
  4. POJ - 1087 A Plug for UNIX(最大流)
  5. 使用Docker Swarm搭建分布式爬虫集群
  6. html双击变成可编辑,jquery 实现双击编辑并保存
  7. Spark 2.2 Core :TimSort 的原理与源码分析
  8. python大漠插件多开_[求助,]用python调用大漠插件,注册好后调用出错.完全不会了...
  9. dataframe_转换日期格式
  10. 微信公众号文章的爬取(搜狗微信搜索)
  11. 802.11 ------ Beacon帧、Beacon Interval、TBTT、Listen Interval、TIM、DTIM
  12. 磨皮进阶之高低频全方位解析
  13. Mac苹果电脑怎么快速切换应用?
  14. 考题篇(6.2) 07 ❀ FortiGate ❀ Fortinet 网络安全专家 NSE 4
  15. html静态网站登陆验证,静态页面js加密URL密码验证
  16. 2020年美容师(中级)报名考试及美容师(中级)考试总结
  17. 360前端星计划学习-html
  18. UA OPTI570 量子力学28 原子结构的量子力学基础
  19. 图解TCP/IP读书笔记(一)
  20. 平稳性检验(描述性)与纯随机性检验

热门文章

  1. TEXlive+textmaker
  2. windchill按钮更改
  3. 学生默写陆游的古诗《卧春》
  4. 网络验证系统BSPHP,VB.NET对接教程
  5. Catia 弹簧设计
  6. 基于单片机的噪声监测系统设计(#0474)
  7. ubuntu 10.10 的 输入法图标不见了
  8. 001---病狗问题
  9. 如何选择合适的网络备份软件
  10. ESP8266-Arduino编程实例-VEML6040颜色传感器驱动