#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
#include <cctype>
using namespace std;
void read(int &num)
{
char ch;
while(!isdigit(ch=getchar()));
for(num=ch-'0';isdigit(ch=getchar());num=num*10+ch-'0');
} const int MAXN = 1005;
const int MAXM = 100005;
const int INF = 0x3f3f3f3f; int n, m; int fir[MAXN], to[MAXM], nxt[MAXM], wt[MAXM], cnt;
inline void Add(int u, int v, int w) { to[++cnt] = v; nxt[cnt] = fir[u]; fir[u] = cnt; wt[cnt] = w; } int rfir[MAXN], rto[MAXM], rnxt[MAXM], rwt[MAXM], rcnt;
inline void rAdd(int ru, int rv, int rw) { rto[++rcnt] = rv; rnxt[rcnt] = rfir[ru]; rfir[ru] = rcnt; rwt[rcnt] = rw; } int dis[MAXN]; int inq[MAXN];
inline bool SPFA(int T, int S)
{
memset(dis, 0x3f, sizeof dis);
queue<int> Q;
dis[T] = 0; Q.push(T);
while(!Q.empty())
{
int u = Q.front();
if(inq[u] > n) return 0;
for(int i = rfir[u]; i; i = rnxt[i])
if(dis[rto[i]] > dis[u] + rwt[i])
{
dis[rto[i]] = dis[u] + rwt[i];
if(!inq[rto[i]])
Q.push(rto[i]), inq[rto[i]] = 1;
}
Q.pop(); inq[u]--;
}
return dis[S] < INF;
} struct node
{
int x, g, f;
node(){}
node(int xx, int gg, int ff):x(xx), g(gg), f(ff){}
bool operator <(const node &y)const
{
return y.f == f ? y.g < g : y.f < f;
}
}; inline int K_th(int S, int T, int K)
{
if(!SPFA(T, S)) return -1;
if(S == T) K++;
priority_queue<node>Q;
Q.push(node(S, 0, dis[S]));
int counter = 0;
while(!Q.empty())
{
node u = Q.top(); Q.pop();
if(u.x == T && ++counter == K) return u.g;
for(int i = fir[u.x]; i; i = nxt[i])
Q.push(node(to[i], u.g + wt[i], u.g + wt[i] +dis[to[i]]));
}
return -1;
} int main()
{
//freopen("data.in", "r", stdin);
int x, y, z;
read(n), read(m);
for(int i = 1; i <= m; i++)
read(x), read(y), read(z), Add(x, y, z), rAdd(y, x, z);
read(x), read(y), read(z);
printf("%d\n", K_th(x, y, z));
}

最新文章

  1. Apache curator-client详解
  2. 字段符号FIELD-SYMBOLS
  3. iOS开发--即时通讯
  4. Centos 7 通过YUM安装 PHP7 NGINX1.1.8 POSTGRESQL9.5
  5. Git 笔记三 Git的初步使用
  6. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
  7. UE4 径向模糊radiu blur
  8. nxlog4go 的配置驱动
  9. c++中字符串的反转
  10. 分布式job-任务调度(一)
  11. React列表
  12. Vuex之理解Getters的用法
  13. 如何用新安装的jdk替换掉Linux系统默认jdk
  14. top 内存mem的used很高,或者100%
  15. rocketmq技术架构图
  16. NFS服务的端口分配
  17. oracle 11GR2 单机打补丁PSU 11.2.0.4.180717
  18. 关于jsonp跨域的 实现
  19. 【转】百亿级实时大数据分析项目,为什么不用Hadoop?
  20. 转:hive面试题

热门文章

  1. Springboot Actuator之十二:actuator aop
  2. 小白的C++之路——求质数
  3. Xgboost GPU配置
  4. 由一个空工程改为SpringBoot工程
  5. Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)
  6. Javascript中创建函数的几种方法
  7. Beego 学习笔记9:Boostrap使用介绍
  8. 49.react中使用less
  9. 分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集
  10. IDEA 创建类是自动添加注释和创建方法时快速添加注释