题意:给你点、边,求起点到终点的最短距离。

题解:由于题目的数据量特别大,所以需要用邻接表来存边,之后对Dijkstra算法稍微魔改一下就可以了,本来以为会超时,做好了打堆优化的准备,结果卡时间过了,可以说很开心了.

注意SPFA会超时。

  1. #include <queue>
  2. #include <cmath>
  3. #include <stack>
  4. #include <cstdio>
  5. #include <cstring>
  6. #include <cstdlib>
  7. #include <iostream>
  8. #include <algorithm>
  9. using namespace std;
  10. const int maxn = 20050;
  11. const int INF = 1e9 + 7;
  12. struct node
  13. {
  14. int next,to,w;
  15. }s[50050*2];
  16. int head[maxn],f[maxn],dis[maxn],num,n,m,S,T;
  17. void add(int u,int v,int w)
  18. {
  19. s[num].to = v;
  20. s[num].next = head[u];
  21. s[num].w = w;
  22. head[u] = num++;
  23. }
  24. void SPFA()
  25. {
  26. int i,j,MIN,k,u;
  27. for(i=0;i<n;i++)
  28. {
  29. dis[i] = INF;
  30. f[i] = 0;
  31. }
  32. for(i=head[S];i!=-1;i=s[i].next)
  33. {
  34. u = s[i].to;
  35. dis[u] = s[i].w;
  36. }
  37. f[S] = 1;
  38. for(i=0;i<n;i++)
  39. {
  40. MIN = INF;
  41. k = -1;
  42. for(j=0;j<n;j++)
  43. {
  44. if(!f[j]&&dis[j]<MIN)
  45. {
  46. MIN = dis[j];
  47. k = j;
  48. }
  49. }
  50. if(MIN==INF)
  51. break;
  52. f[k] = 1;
  53. for(j=head[k];j!=-1;j=s[j].next)
  54. {
  55. u = s[j].to;
  56. if(!f[u]&&dis[k]+s[j].w<dis[u])
  57. dis[u] = dis[k] + s[j].w;
  58. }
  59. }
  60. if(dis[T]!=INF)
  61. printf("%d\n",dis[T]);
  62. else
  63. printf("unreachable\n");
  64. }
  65. int main()
  66. {
  67. int t,i,a,b,c,k = 1;
  68. scanf("%d",&t);
  69. while(t--)
  70. {
  71. scanf("%d%d%d%d",&n,&m,&S,&T);
  72. for(i=0;i<n;i++)
  73. head[i] = -1;
  74. num = 0;
  75. for(i=0;i<m;i++)
  76. {
  77. scanf("%d%d%d",&a,&b,&c);
  78. add(a,b,c);
  79. add(b,a,c);
  80. }
  81. printf("Case #%d: ",k++);
  82. SPFA();
  83. }
  84. return 0;
  85. }

UVa-10986_Sending email (向前星+Dijkstra)的更多相关文章

  1. 【bfs+链式向前星】防御僵尸(defend)计蒜客 - 45288

    题目: A 国有 n 座城市,n−1 条双向道路将这些城市连接了起来,任何两个城市都可以通过道路互通. 某日,A 国爆发了丧尸危机,所有的幸存者现在都聚集到了 A 国的首都(首都是编号为 1 的城市) ...

  2. POJ-3159(差分约束+Dijikstra算法+Vector优化+向前星优化+java快速输入输出)

    Candies POJ-3159 这里是图论的一个应用,也就是差分约束.通过差分约束变换出一个图,再使用Dijikstra算法的链表优化形式而不是vector形式(否则超时). #include< ...

  3. 图论 ---- spfa + 链式向前星 ---- poj 3268 : Silver Cow Party

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12674   Accepted: 5651 ...

  4. 模板——最小生成树prim算法&&向前星理解

    通过最小生成树(prim)和最短路径优化引出的向前星存图,时至今日才彻底明白了.. head[i]存储的是父节点为i引出的最后一条边的编号, next负责把head[i]也就是i作为父节点的所有边连接 ...

  5. Tarjan模版(链式向前星表示方法)

    这道模版用到了链式向前星表示法: struct node { int v,next; }edge[]; void add(int x,int y) { edge[++cnt].next=heads[x ...

  6. 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)

    layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...

  7. 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)

    layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...

  8. 【数据结构】链式向前星知识点&代码

    代码: struct NODE{ int to; int nxt; int c; }node[MM];//链式向前星 ; void add(int a,int b,int c){ node[lcnt] ...

  9. uva 10986 - Sending email(最短路Dijkstra)

    题目连接:10986 - Sending email 题目大意:给出n,m,s,t,n表示有n个点,m表示有m条边,然后给出m行数据表示m条边,每条边的数据有连接两点的序号以及该边的权值,问说从点s到 ...

随机推荐

  1. JQuery或JS判断浏览器内核版本号以及是否支持W3C盒子模型

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support .在更新的 2.0 版本中,将不再支持 IE 6/7/8. ...

  2. nginx链接末尾自动补全斜杠

    放在locaation里边就行 if (-d $request_filename){ rewrite ^(.*[^/])$ $/ permanent;#加斜杠 } 这样,nginx就会进行判断了,如果 ...

  3. tomcat的三种部署项目的方式

    1.直接将项目放在webapps目录下. 如果将项目直接打成WAR包,放在webapps目录下会自动解压 项目的文件夹名称就是项目的访问路径,也就是虚拟目录. 2.配置conf文件夹下的server. ...

  4. CentOS 7安装与配置JDK8

    1.检查是否安装过JDK 2.下载安装包并上传服务器 3.安装JDK rpm -ivh jdk-8u131-linux-x64.rpm 4.查看是否安装正常 java -version 5.配置环境变 ...

  5. day38 07-Spring框架Bean的时候方式

    Spring是自动帮我们创建对象的,有几种创建Bean的方式呢? 构造方法实例化:(默认无参数)其实就是反射new Instance(). 静态工厂实例化: 实例工厂实例化: 一般不会改变它实例化的方 ...

  6. Mysql 5.7.17安装后登录mysql的教程方法

    在运行 ./bin/mysqld Cinitialize 初始化数据库时,会生成随机密码,示例: [Note] A temporary password is generated for root@l ...

  7. 一次web请求发生的神奇故事

    网络时代来临的时候,一个食指的点击就能解决很多问题! 那么当你的食指点击的时候,都发生了哪些神奇的事情呢?下面从几个角度为你做一个指引 1. 网络角度:一次网络请求是如何实现的 2. 浏览器角度:He ...

  8. 常用命令4-文件搜索命令 2- whereis

    whereis比较局限,只能查看系统命令.

  9. django1.11启动错误

    错误信息: 复制代码 Unhandled exception in thread started by <function check_errors..wrapper at 0x10f03b8c ...

  10. PHPCMS网站迁移过程后,添加内容 报500错误解决方案

    问题出现原因:1.网站迁移过程中,上传下载文件时文件丢失  2.PHPCMS源码更新升级 解决方法 1.可以到官方下载最新版源码,替换过去.如果对源码有改动,需要先保存改动过的文件,替换过去之后,再替 ...