http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2493

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <queue>
  4. using namespace std;
  5. const int maxn=;
  6. const int maxm=maxn*maxn;
  7. const long long INF=1LL<<;
  8. int vis[maxn],head[maxn];
  9. int n,m,cnt = ;
  10. struct node
  11. {
  12. int u,v;
  13. long long w;
  14. int next;
  15.  
  16. } edge[maxm];
  17.  
  18. inline void add(int u,int v,long long w)
  19. {
  20. edge[cnt].u = u;
  21. edge[cnt].v = v;
  22. edge[cnt].w = w;
  23. edge[cnt].next = head[u];
  24. head[u] = cnt++;
  25. }
  26.  
  27. void spfa(int s, long long dis[])
  28. {
  29.  
  30. queue<int>q;
  31. q.push(s);
  32. vis[s] = ;
  33. dis[s] = ;
  34. while(!q.empty())
  35. {
  36. int u = q.front();
  37. q.pop();
  38. vis[u] = ;
  39. for (int j = head[u]; j!=-; j= edge[j].next)
  40. {
  41. int v = edge[j].v;
  42. long long w = edge[j].w;
  43. if (dis[u]+w < dis[v])
  44. {
  45. dis[v] = dis[u]+w;
  46. q.push(v);
  47. vis[v] = ;
  48. }
  49. }
  50. }
  51.  
  52. }
  53. void init()
  54. {
  55.  
  56. }
  57. int main()
  58. {
  59. int u,v;
  60. long long w;
  61. long long dis1[maxn],dis2[maxn];
  62. while(~scanf("%d %d",&n,&m))
  63. {
  64. for (int i = ; i <= n; i++)
  65. {
  66. vis[i] = ;
  67. dis1[i] = INF;
  68. dis2[i] = INF;
  69. head[i] = -;
  70. }
  71. cnt = ;
  72. for (int i = ; i < m; i++)
  73. {
  74. scanf("%d %d %lld",&u,&v,&w);
  75. add(u,v,w);
  76. add(v,u,w);
  77. }
  78. int s,e;
  79. long long min=INF;
  80. scanf("%d %d",&s,&e);
  81. spfa(s,dis1);//求出起点到所有点的最短路径
  82. spfa(e,dis2);//求出终点到所有点的最短路径
  83. for (int i = ; i < cnt; i++)//遍历所有的边
  84. {
  85. u = edge[i].u;
  86. v = edge[i].v;
  87. w = edge[i].w;
  88. if (dis1[u]+dis2[v]+w/ < min)//S->u+e->v+w/2即为改变后的权值,找出最小的
  89. min = dis1[u]+dis2[v]+w/;
  90. }
  91. if(min==INF)
  92. {
  93. puts("No solution");
  94. continue;
  95. }
  96. printf("%lld\n",min);
  97. }
  98. return ;
  99. }

Constructing Roads(spfa)的更多相关文章

  1. Constructing Roads——F

    F. Constructing Roads There are N villages, which are numbered from 1 to N, and you should build som ...

  2. Constructing Roads In JGShining's Kingdom(HDU1025)(LCS序列的变行)

    Constructing Roads In JGShining's Kingdom  HDU1025 题目主要理解要用LCS进行求解! 并且一般的求法会超时!!要用二分!!! 最后蛋疼的是输出格式的注 ...

  3. [ACM] hdu 1025 Constructing Roads In JGShining's Kingdom (最长递增子序列,lower_bound使用)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  4. HDU 1102 Constructing Roads

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. Constructing Roads (MST)

    Constructing Roads Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  6. HDU 1025 Constructing Roads In JGShining's Kingdom(二维LIS)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  7. hdu--(1025)Constructing Roads In JGShining's Kingdom(dp/LIS+二分)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  8. POJ 2421 Constructing Roads (最小生成树)

    Constructing Roads Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  9. hdu 1102 Constructing Roads Kruscal

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意:这道题实际上和hdu 1242 Rescue 非常相似,改变了输入方式之后, 本题实际上更 ...

随机推荐

  1. ubuntu14.3安装phpmyadmin

    一.安装 sudo apt-get install phpmyadmin 二.软连接 cd /var/www/html/ sudo ln -s /usr/share/phpmyadmin phpmya ...

  2. listcontrol 加combobox

    之前写过一篇(list Control实现单元格编辑)文章,那篇文章不是很完善执行的时候有时会出错,这篇文章经过完善后还加入了Combo Box功能! 这里我就只是晒一下我的代码; 头文件: // L ...

  3. CAD设置图层亮度(com接口)

    主要用到函数说明: MxDrawXCustomFunction::Mx_SetLayerBright 设置显示亮度,默认值为100%.详细说明如下: 参数 说明 LPCTSTR pszLayerNam ...

  4. openstack——neutron网络服务

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  5. [工具]iostat

    本文主要分析了Linux的iostat命令的源码 iostat源码共563行,应该算是Linux系统命令代码比较少的了.源代码中主要涉及到如下几个Linux的内核文件: 1./proc/disksta ...

  6. [C++] 配平化学方程式算法的封装

    有人已经实现了配平的方法,在此不再重复介绍. https://www.cnblogs.com/Elfish/p/7631603.html 但是,上述的方法所提供的代码还是存在着问题,需要进一步修改. ...

  7. CentOS6.8 安装python2.7,pip以及yum

    由于CentOS6.8里自带的yum所依赖的python是2.6.66版本,但是安装pip至少要求python是2.7版本,因而原有的2.6并不能卸载,又得安装新的2.7.之前安装的时候强制卸载了2. ...

  8. socket 网络编程笔记 一

    初始socket模块 Serve端代码 import socket sk = socket.socket() #默认为TCP连接 """socket 里面两个方法 fam ...

  9. 【模板】Manacher 回文串

    推荐两个讲得很好的博客: http://blog.sina.com.cn/s/blog_70811e1a01014esn.html https://segmentfault.com/a/1190000 ...

  10. vue 组件通信传值

    父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...