#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int maxn=2e6+5;
struct asd{
int from,to,next,val;
}b[maxn],b2[maxn];
int head[maxn],tot=1;
int h2[maxn],t2=1;
int n,m;
void ad(int aa,int bb,int cc){
b[tot].from=aa;
b[tot].to=bb;
b[tot].val=cc;
b[tot].next=head[aa];
head[aa]=tot++;
}
void ad2(int aa,int bb,int cc){
b2[t2].from=aa;
b2[t2].to=bb;
b2[t2].val=cc;
b2[t2].next=h2[aa];
h2[aa]=t2++;
}
struct jie{
int num,dis;
jie(int aa=0,int bb=0){
num=aa,dis=bb;
}
bool operator < (const jie& A) const{
return dis>A.dis;
}
};
priority_queue<jie> q;
int dis[maxn];
bool vis[maxn];
void DIJ(int xx){
dis[xx]=0;
q.push(jie(xx,0));
while(!q.empty()){
int now=q.top().num;
q.pop();
if(vis[now]) continue;
vis[now]=1;
for(int i=head[now];i!=-1;i=b[i].next){
int u=b[i].to;
if(dis[u]>dis[now]+b[i].val){
dis[u]=dis[now]+b[i].val;
q.push(jie(u,dis[u]));
}
}
}
}
struct as{
int qd,hx,gx;
as(int aa=0,int bb=0,int cc=0){
qd=aa,hx=bb,gx=cc;
}
bool operator < (const as& A) const{
return hx+gx>A.hx+A.gx;
}
};
int cnt[maxn];
priority_queue<as> qq;
int Astar(int s,int t,int k){
if(dis[s]==0x3f3f3f3f) return -1;
qq.push(as(s,dis[s],0));
while(!qq.empty()){
int nqd=qq.top().qd,nhx=qq.top().hx,ngx=qq.top().gx;
qq.pop();
cnt[nqd]++;
if(cnt[nqd]==k && nqd==t) return ngx;
if(cnt[nqd]>k) continue;
for(int i=h2[nqd];i!=-1;i=b2[i].next){
int u=b2[i].to;
qq.push(as(u,dis[u],ngx+b2[i].val));
}
}
return -1;
}
int main(){
memset(dis,0x3f,sizeof(dis));
memset(head,-1,sizeof(head));
memset(h2,-1,sizeof(h2));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int aa,bb,cc;
scanf("%d%d%d",&aa,&bb,&cc);
ad2(aa,bb,cc);
ad(bb,aa,cc);
}
int s,t,k;
scanf("%d%d%d",&s,&t,&k);
if(s==t) ++k;
DIJ(t);
printf("%d\n",Astar(s,t,k));
return 0;
}

最新文章

  1. CGContextRef 绘图
  2. MS SQL 多连接数时修改数据库名称
  3. Firefly 性能测试 报告
  4. Dom操作--全选反选
  5. lib,dll区别 及 VS中如何添加lib,dll
  6. 部署 k8s Cluster(上)- 每天5分钟玩转 Docker 容器技术(118)
  7. PHP如何读取json数据
  8. 微信小程序 sha1 实现密码加密
  9. Tesseract OCR win 32位编译
  10. mogodb分片配置
  11. BBS论坛(十三)
  12. Linux系统初始化配置项(centos7)
  13. Linux awk命令详解 + 练习
  14. React native Configuration with name &#39;default&#39; not found.
  15. Linux 下SHELL脚本自动同步文件
  16. *p++,*++p,*(p++),*(++p)
  17. 20170809直接访问功能测试Postman
  18. MODIS产品分析和数据处理
  19. POJ 3096 Surprising Strings
  20. (zxing.net)一维码EAN 13的简介、实现与解码

热门文章

  1. 原生js实现点击添加购物车按钮出现飞行物飞向购物车
  2. redis的5种数据结构和基本操作
  3. laravel模板使用
  4. ios判断当前设备是否是ipad
  5. (二)用testng的groups管理用例
  6. (六)POI-操作Excel的poi的字体设置
  7. 读Linux高性能服务器编程-12章http服务器源码
  8. 【JMeter_22】JMeter逻辑控制器__录制控制器&lt;Recording Controller&gt;
  9. 基于node的前端项目编译时内存溢出问题
  10. Java 多线程基础(八)线程让步