题意:有n个路口,每个路口通向其他某些路口,但是每个路口的轨道有方向,初始时指向第一个给出的路口的方向,如果要去其他路口,就需要下车操作一次路口转换器,让轨道改向需要的方向,问A路口到B路口需要操作转换器的最少次数。

对于每个路口,第一个指向路口的边权值为 0 表示花费 0 次操作,其余边权值为 1 表示花费 1 次操作。直接求最短路就行。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<vector>
 4 #include<queue>
 5 #include<algorithm>
 6 using namespace std;
 7 typedef pair<int,int> pii;
 8
 9 struct cmp{
10     bool operator()(pii a,pii b){
11         return a.first>b.first;
12     }
13 };
14
15 int head[105],point[10005],next[10005],val[10005],size;
16 int n,s,t,dist[105];
17
18 void add(int a,int b,int v){
19     point[size]=b;
20     val[size]=v;
21     next[size]=head[a];
22     head[a]=size++;
23 }
24
25 void dij(){
26     int i;
27     memset(dist,-1,sizeof(dist));
28     dist[s]=0;
29     priority_queue<pii,vector<pii>,cmp>q;
30     q.push(make_pair(dist[s],s));
31     while(!q.empty()){
32         pii u=q.top();
33         q.pop();
34         if(u.first>dist[u.second])continue;
35         for(i=head[u.second];~i;i=next[i]){
36             int j=point[i],v=u.first+val[i];
37             if(dist[j]==-1||dist[j]>v){
38                 dist[j]=v;
39                 q.push(make_pair(dist[j],j));
40             }
41         }
42     }
43     printf("%d\n",dist[t]);
44 }
45
46 int main(){
47     while(scanf("%d%d%d",&n,&s,&t)!=EOF){
48         int i,j;
49         memset(head,-1,sizeof(head));
50         size=0;
51         for(i=1;i<=n;i++){
52             int num;
53             scanf("%d",&num);
54             for(j=1;j<=num;j++){
55                 int b;
56                 scanf("%d",&b);
57                 add(i,b,j==1?0:1);
58             }
59         }
60         dij();
61     }
62     return 0;
63 }

View Code

转载于:https://www.cnblogs.com/cenariusxz/p/4785410.html

poj1847 最短路相关推荐

  1. 最短路常用的四种模板(poj1847)

    针对于poj1847这道题,总结一下最短路常用的四种模板. ** Floyed(O(n^3)) ** #include<iostream> #include<cstdio> # ...

  2. 单源最短路 Dijkstra算法 和 SPFA算法

    单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...

  3. POJ - 1847 Tram 最短路,思维建图

    题目链接 POJ-1847 题意 给定n节点,节点之间有道路相连,但是每个节点都有个开关,只有开关指向的节点才能通行,你可以搬动开关.给定起点终点,求最少搬动开关次数. 解法 建图,对于每个节点,初始 ...

  4. [C] [最短路] 只有5行的算法:Floyd-Warshall

    终于学到求最短路了,终于来到我最喜欢的算法--Floyd-Warshall了!今天还有点小激动呢! 我喜欢它,当然是因为它逻辑十分简单咯!真的只有5行诶! Floyd-Warshall算法 题目描述 ...

  5. BZOJ4152 AMPPZ2014 The Captain(最短路)

    事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案.于是这样连边跑最短路就可以了. #include<iostream> #include<cstdio> #inclu ...

  6. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)

    题目链接 先随便建一棵树. 如果两个点(u,v)不经过非树边,它们的dis可以直接算. 如果两个点经过非树边呢?即它们一定要经过该边的两个端点,可以直接用这两个点到 u,v 的最短路更新答案. 所以枚 ...

  7. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

  8. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  9. E:By Elevator or Stairs? CF595 DP最短路

    题目链接 比赛的时候一看,这不是最短路吗,然后敲了一个最短路. 然后比赛完发现大家基本都写的dp,我真是个憨憨,dp3行 最短路就建个简单的图,dp就是从上一维转化过来就是了 优秀的dp: //#pr ...

  10. The Shortest Statement CodeForces - 1051F LCA+最短路

    太弱了... 一开始看到题感觉是跑一个最小生成树在上边进行LCA就行了,但是发现过不了样例,然后就是就想到了之前做过类似做法的题目,就是非生成树上的边最多只有21条,然后就那些边记录下来,通过每一条边 ...

最新文章

  1. 自动驾驶软件工程之全局规划
  2. 深层上下文化的单词表示
  3. 谷歌小姐姐开源姿势动画师项目,组合现有TF模型,只需一张SVG图片便可配置...
  4. Lucene 学习笔记(一)
  5. 【html、css、jq】制作一个简洁的音乐播放器
  6. 游戏中的物理与数学(一):物体运动算法的实现
  7. 初秋 · 外婆家的茶山 · 快乐的味道 2012年9月
  8. java jdk1 5手机版,java jdk1.7|java7_绿茶手机网
  9. JavaEE学习12—JDBC(下)
  10. 麟龙指标通达信指标公式源码_【通达信】麟龙量能饱合度指标公式源码
  11. 「图像处理」C#+AForge.Net+DlibDotNet实现人脸识别
  12. 查看oracle归档日志内容,查看归档日志内容
  13. 网页数据提取----网络投票软件开发(续1)
  14. ThinkPHP6 缩略图上传
  15. 小爱音箱当电脑音箱(电脑没有蓝牙)
  16. 「科普」一文读懂生产制造MES系统
  17. rs_D455相机内外参标定+imu联合标定
  18. C语言课间程序设计实践报告
  19. 由旋转矩阵求旋转中心
  20. 【JKD源码】String 三兄弟

热门文章

  1. 单片机c语言编程入门下載,51系列单片机C语言编程入门(下)
  2. jmeter定时器的使用_Jmeter的九种定时器解析
  3. android 监听连接超时,android – Retrofit和OkHttpClient,在失败方法中捕获连接超时
  4. java类似keyvaluepair_BM25 算法的java实现,有详细的说明文档和代码 Develop 238万源代码下载- www.pudn.com...
  5. python random模块安装_Python中的For循环和Random模块
  6. 监督分类空白处也被分类了_如何兼容自训练与预训练:更高效的半监督文本分类模型...
  7. 电路实验一阶电路误差分析_逆变器电路原理分析
  8. 第一周练习代码以及备注
  9. mysql8下的密码过期问题以及navicat登录mysql报错的问题
  10. json文件内容+csv保存文件[Python]