分析:d[i]表示到i点,最少的操作数

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<queue>
  4. #include<cstdlib>
  5. #include<algorithm>
  6. #include<vector>
  7. #include<cmath>
  8. using namespace std;
  9. typedef long long LL;
  10. const int N=+;
  11. const int INF=0x3f3f3f3f;
  12. struct Edge{
  13. int v,w,next;
  14. bool operator<(const Edge &e)const{
  15. return w>e.w;
  16. }
  17. }edge[N*N];
  18. int head[N],tot,n,s,t,d[N];
  19. void add(int u,int v,int w){
  20. edge[tot].v=v;
  21. edge[tot].w=w;
  22. edge[tot].next=head[u];
  23. head[u]=tot++;
  24. }
  25. priority_queue<Edge>q;
  26. bool vis[N];
  27. int dij(int s,int t){
  28. for(int i=;i<=n;++i)d[i]=INF,vis[i]=;
  29. d[s]=,q.push(Edge{s,,});
  30. while(!q.empty()){
  31. while(!q.empty()&&vis[q.top().v])q.pop();
  32. if(q.empty())break;
  33. int u=q.top().v;
  34. q.pop();
  35. vis[u]=;
  36. for(int i=head[u];~i;i=edge[i].next){
  37. int v=edge[i].v;
  38. if(!vis[v]&&d[v]>d[u]+edge[i].w){
  39. d[v]=d[u]+edge[i].w;
  40. q.push(Edge{v,d[v],});
  41. }
  42. }
  43. }
  44. return d[t]==INF?-:d[t];
  45. }
  46. int main(){
  47. scanf("%d%d%d",&n,&s,&t);
  48. memset(head,-,sizeof(head));
  49. for(int i=;i<=n;++i){
  50. int k,v;
  51. scanf("%d",&k);
  52. for(int j=;j<=k;++j){
  53. scanf("%d",&v);
  54. add(i,v,j==?:);
  55. }
  56. }
  57. printf("%d\n",dij(s,t));
  58. return ;
  59. }

POJ 1847 Tram dij的更多相关文章

  1. POJ 1847 Tram (最短路径)

    POJ 1847 Tram (最短路径) Description Tram network in Zagreb consists of a number of intersections and ra ...

  2. 最短路 || POJ 1847 Tram

    POJ 1847 最短路 每个点都有初始指向,问从起点到终点最少要改变多少次点的指向 *初始指向的那条边长度为0,其他的长度为1,表示要改变一次指向,然后最短路 =========高亮!!!===== ...

  3. poj 1847 Tram

    http://poj.org/problem?id=1847 这道题题意不太容易理解,n个车站,起点a,终点b:问从起点到终点需要转换开关的最少次数 开始的那个点不需要转换开关 数据: 3 2 1// ...

  4. [最短路径SPFA] POJ 1847 Tram

    Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14630 Accepted: 5397 Description Tra ...

  5. POJ 1847 Tram (最短路)

    Tram 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/N Description Tram network in Zagreb ...

  6. poj 1847 Tram【spfa最短路】

    Tram Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12005   Accepted: 4365 Description ...

  7. (简单) POJ 1847 Tram,Dijkstra。

    Description Tram network in Zagreb consists of a number of intersections and rails connecting some o ...

  8. POJ - 1847 Tram(dijkstra)

    题意:有向图有N个点,当电车进入交叉口(某点)时,它只能在开关指向的方向离开. 如果驾驶员想要采取其他方式,他/她必须手动更换开关.当驾驶员从路口A驶向路口B时,他/她尝试选择将他/她不得不手动更换开 ...

  9. Floyd_Warshall POJ 1847 Tram

    题目传送门 题意:这题题目难懂.问题是A到B最少要转换几次城市.告诉每个城市相连的关系图,默认与第一个之间相连,就是不用转换,其余都要转换. 分析:把第一个城市权值设为0, 其余设为0.然后Floyd ...

随机推荐

  1. PHP知识分享之session && cookie

    <?php /* * @Content : session && cookie * @author : Mr.xml * @time : 2015-3-17 09:53:49 * ...

  2. 【转】pybrain的使用——一个开源的python神经网络工具包

    原文地址   http://lavimo.blog.163.com/blog/static/2149411532013911115316263/ 昨天的主要活动内容是找一个神经网络的包....= =这 ...

  3. firemonkey 得到屏幕信息

    type TO_MONITOR = class hm: HMONITOR; end; function EnumMonitorsProc(hm: HMONITOR; dc: HDC; r: PRect ...

  4. poj 1113 Mall

    Mall 水题:注意题目上面有一个至少离城堡的距离为L,其实思考一下就知道是指离凸包(凸多边形)的距离为L,这时很容易知道外围的圆的圆心角叠加之后就是一个整圆:和poj2187一样使用graham形成 ...

  5. qt 5 数据库操作(mysql)

    其实大家都知道,QT5以上的都自带了数据库驱动,所以呢,基本上可以直接使用,于是如果想知道怎么连接数据库,请参考这位大神写的.http://qtdebug.com/DB-AccessMySQL.htm ...

  6. 深入浅出JMS(二)——JMS的组成

    JMS Provider 实现了JMS规范的消息系统,该系统还提供必须的用于管理和控制全方位的功能,如这里的ActiveMQ. Administered Objects Administered Ob ...

  7. Spring核心框架 - AOP之动态代理机制

    动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码.动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类. ...

  8. 微软Hololens学院教程-Hologram 210 Gaze(凝视)【微软教程已经更新,本文是老版本】

    这是老版本的教程,为了不耽误大家的时间,请直接看原文,本文仅供参考哦!原文链接:https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/ho ...

  9. bzoj 3672: [Noi2014]购票 树链剖分+维护凸包

    3672: [Noi2014]购票 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 480  Solved: 212[Submit][Status][D ...

  10. apk签名《转》

    出处!:http://jeff-pluto-1874.iteye.com/blog/847366 我觉得写的不错就转载了. 一.Android Apk签名Apk签名首先要有一个keystore的签名用 ...