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

 #include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
const int maxn=;
const int maxm=maxn*maxn;
const long long INF=1LL<<;
int vis[maxn],head[maxn];
int n,m,cnt = ;
struct node
{
int u,v;
long long w;
int next; } edge[maxm]; inline void add(int u,int v,long long w)
{
edge[cnt].u = u;
edge[cnt].v = v;
edge[cnt].w = w;
edge[cnt].next = head[u];
head[u] = cnt++;
} void spfa(int s, long long dis[])
{ queue<int>q;
q.push(s);
vis[s] = ;
dis[s] = ;
while(!q.empty())
{
int u = q.front();
q.pop();
vis[u] = ;
for (int j = head[u]; j!=-; j= edge[j].next)
{
int v = edge[j].v;
long long w = edge[j].w;
if (dis[u]+w < dis[v])
{
dis[v] = dis[u]+w;
q.push(v);
vis[v] = ;
}
}
} }
void init()
{ }
int main()
{
int u,v;
long long w;
long long dis1[maxn],dis2[maxn];
while(~scanf("%d %d",&n,&m))
{
for (int i = ; i <= n; i++)
{
vis[i] = ;
dis1[i] = INF;
dis2[i] = INF;
head[i] = -;
}
cnt = ;
for (int i = ; i < m; i++)
{
scanf("%d %d %lld",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
int s,e;
long long min=INF;
scanf("%d %d",&s,&e);
spfa(s,dis1);//求出起点到所有点的最短路径
spfa(e,dis2);//求出终点到所有点的最短路径
for (int i = ; i < cnt; i++)//遍历所有的边
{
u = edge[i].u;
v = edge[i].v;
w = edge[i].w;
if (dis1[u]+dis2[v]+w/ < min)//S->u+e->v+w/2即为改变后的权值,找出最小的
min = dis1[u]+dis2[v]+w/;
}
if(min==INF)
{
puts("No solution");
continue;
}
printf("%lld\n",min);
}
return ;
}

最新文章

  1. .Net WebApi 实现OAuth2.0认证
  2. oracle中SET DEFINE意思
  3. http模拟请求工具
  4. WPF+Caliburn.Micro 杂记
  5. [GeoServer]重拾GeoServer之安装篇
  6. Windows组策略同步问题
  7. uva 12589 - Learning Vector
  8. Consumer Client Re-Design (翻译)
  9. ButterKnife的使用
  10. abiword Related Pages
  11. MVC Razor视图引擎控件
  12. Ceph RBD CephFS 存储
  13. [04] 利用注解生成实体类对应的建表sql语句
  14. 对Java的初识
  15. Spring MVC前后端的数据传输
  16. Windows下使用console线连接思科交换机
  17. jquery $(&#39;#form1&#39;).serialize()序列化提交表单
  18. pandas.cut使用总结
  19. Oracle 如何将“26-9月 -17 06.46.00.000000000 下午”字符串转换成标准日期格式
  20. tomcat自动缓存的几种解决方式

热门文章

  1. Centos6.6 安装nfs网络文件系统
  2. Centos7安装gitlab服务器
  3. 记录--git命令行上传项目到github仓库
  4. Unity中确定时间是否在一定范围内
  5. 我的FPGA
  6. 模板中tempname与class区别
  7. 学习MPI并行编程记录
  8. Flask - 请求处理流程和上下文源码分析
  9. prime算法邻接表写法
  10. TASKLIST 显示计算机上的所有进程