#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#define MAXN 1005
#define MAXM 500005
#define INF 1000000000
using namespace std;
struct node
{
int v, w, next;
}edge[MAXM], revedge[MAXM];
struct A
{
int f, g, v;
bool operator <(const A a)const {
if(a.f == f) return a.g < g;
return a.f < f;
}
};
int e, vis[MAXN], d[MAXN], q[MAXM * ];
int head[MAXN], revhead[MAXN];
int n, m, s, t, k;
void init()
{
e = ;
memset(head, -, sizeof(head));
memset(revhead, -, sizeof(revhead));
}
void insert(int x, int y, int w)
{
edge[e].v = y;
edge[e].w = w;
edge[e].next = head[x];
head[x] = e;
revedge[e].v = x;
revedge[e].w = w;
revedge[e].next =revhead[y];
revhead[y] = e++;
}
void spfa(int src)
{
for(int i = ; i <= n; i++) d[i] = INF;
memset(vis, , sizeof(vis));
vis[src] = ;
int h = , t = ;
q[] = src;
d[src] = ;
while(h < t)
{
int u = q[h++];
vis[u] = ;
for(int i = revhead[u] ; i != -; i = revedge[i].next)
{
int v = revedge[i].v;
int w = revedge[i].w;
if(d[v] > d[u] + w)
{
d[v] = d[u] + w;
if(!vis[v])
{
q[t++] = v;
vis[v] = ;
}
}
}
}
}
int Astar(int src, int des)
{
int cnt = ;
priority_queue<A>Q;
if(src == des) k++;
if(d[src] == INF) return -;
A t, tt;
t.v = src, t.g = , t.f = t.g + d[src];
Q.push(t);
while(!Q.empty())
{
tt = Q.top();
Q.pop();
if(tt.v == des)
{
cnt++;
if(cnt == k) return tt.g;
}
for(int i = head[tt.v]; i != -; i = edge[i].next)
{
t.v = edge[i].v;
t.g = tt.g + edge[i].w;
t.f = t.g + d[t.v];
Q.push(t);
}
}
return -;
}
int main()
{
int x, y, w;
while(scanf("%d%d", &n, &m) != EOF)
{
init();
for(int i = ; i <= m; i++)
{
scanf("%d%d%d", &x, &y, &w);
insert(x, y, w);
}
scanf("%d%d%d", &s, &t, &k);
spfa(t);
printf("%d\n", Astar(s, t));
}
return ;
}

//K短路

最新文章

  1. 如何修改 Total commander 配置文件的路径
  2. SQLServer存储过程和触发器学习记录及简单例子
  3. iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等(转)
  4. linux服务器报Too many open files的解决方法
  5. linux里的vi怎么移动到最后一行
  6. Shared Preferences 数据存储
  7. IE7浏览器下CSS属性选择器二三事
  8. Android控件大全(二)——Toolbar
  9. asp.net MVC日志插件Log4Net学习笔记二:保存日志到sqlserver的配置
  10. 安装MySQL在最后的start service停住了解决方法
  11. Android 开发性能优化之SparseArray(一)
  12. JavaScript权威指南学习笔记5
  13. centos Minicom通信终端
  14. asp.net 后台对话框,确认跳转
  15. Items divided
  16. webdriver入门
  17. tcp/ip 卷一 读书笔记(5)arp和rarp 同网段和不同网段之间的通信过程
  18. 【SQL.基础构建-第一节(1/4)】
  19. js生成随机颜色
  20. python学习之文本文件上传

热门文章

  1. 记一次flannel调试
  2. Visual Studio 展开和折叠代码快捷键
  3. HTML Img标签 src为网络地址无法显示图片问题解决(https)
  4. Tomcat开机自启动,通过服务名重启
  5. hue改下载行数
  6. CF171C 【A Piece of Cake】
  7. Heavy Transportation POJ 1797 最短路变形
  8. SSM @Autowired注入失败
  9. JavaScript和JSON转化
  10. py2 json字符串转字典去掉前缀u