#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#define pa pair<int,int>
#define inf 0x7fffffff
#define M 400008
using namespace std;
int d[M],f[M],n,m,k,s,t,cnt,head[M],next[*M],u[*M],v[*M];
void jia(int a1,int a2,int a3)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
v[cnt]=a3;
return;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
scanf("%d%d",&s,&t);
for(int i=;i<=m;i++)
{
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
jia(a1,a2,a3);
jia(a2,a1,a3);
for(int j=;j<=k;j++)
{
jia(j*n+a1,j*n+a2,a3);
jia(j*n+a2,j*n+a1,a3);
jia((j-)*n+a1,j*n+a2,);
jia((j-)*n+a2,j*n+a1,);
}
}
priority_queue<pa,vector<pa>,greater<pa> >q;
memset(d,,sizeof(d));
q.push(make_pair(,s));
d[s]=;
for(;!q.empty();)
{
int now=q.top().second;
q.pop();
if(f[now])
continue;
f[now]=;
for(int i=head[now];i;i=next[i])
if(d[u[i]]>d[now]+v[i])
{
d[u[i]]=d[now]+v[i];
q.push(make_pair(d[u[i]],u[i]));
}
}
int ans=inf;
for(int i=;i<=k;i++)
ans=min(ans,d[i*n+t]);
printf("%d\n",ans);
return ;
}

分层图按k分层

最新文章

  1. 在MVC5和webAPI下是用Autofac依赖注入
  2. CDH版本升级
  3. vagrant 安装使用 win7
  4. git报错 error: cannot stat ‘&#39;web/js&#39;: Permission denied
  5. DataGrid( 数据表格) 组件[7]
  6. linux命令--sysctl
  7. api的安全问题
  8. APUE-文件和目录(一)
  9. Git基础命令使用(个人总结)
  10. 在linux内核中实现自己的系统调用
  11. 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 二七║ Nuxt 基础:框架初探
  12. WIN10护眼色
  13. 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
  14. 洛谷P1433 吃奶酪【dfs】【剪枝】
  15. graphviz 程序生成多种类型图表详解
  16. Cocoa Touch提供了哪几种Core Animation过渡类型?
  17. CentOS7配置自定义JDK
  18. 编写高质量代码:Web前端开发修炼之道(三)
  19. java中的泛型1
  20. GeekforGeeks Trie - 键树简单介绍 - 构造 插入 和 搜索

热门文章

  1. Struts2自定义类型转换,和处理类型转换错误
  2. ZOJ 1015 Fishing Net(弦图判定)
  3. 提取SD卡中的图片
  4. Docker 在6.4上安装
  5. C语言通用双向循环链表操作函数集
  6. jq 解析josn字符串
  7. Tomcat6性能优化
  8. python:HTML + CSS 优先级 返回顶部
  9. [课程设计]Scrum 2.6 多鱼点餐系统开发进度(下单一览页面-菜式添加功能实现)
  10. Java 利用初学知识 写出自己的名字