求第k短路的长度,如果没有,输出-1。

/*
k短路模板
注意当s=t时,k++。
*/
#include<iostream>
#include<cstdio>
#include<queue>
#define N 1010
#define M 100010
using namespace std;
int head1[N],head2[N],dis[N],vis[N],n,m,k,cnt;
bool flag;
struct node
{
int v,pre,t;
};node e1[M],e2[M];
struct Node
{
int from,g,f;
bool operator< (Node x) const
{
if(x.f!=f)return x.f<f;
return x.g<g;
}
};
void add(int i,int x,int y,int z)
{
e1[i].v=y;
e1[i].t=z;
e1[i].pre=head1[x];
head1[x]=i;
e2[i].v=x;
e2[i].t=z;
e2[i].pre=head2[y];
head2[y]=i;
}
void spfa(int s,int t)
{
queue<int> q;
for(int i=;i<=n;i++)dis[i]=N*M;
vis[s]=;dis[s]=;
q.push(s);
while(!q.empty())
{
int x=q.front();q.pop();
vis[x]=;
for(int i=head2[x];i;i=e2[i].pre)
if(dis[e2[i].v]>dis[x]+e2[i].t)
{
dis[e2[i].v]=dis[x]+e2[i].t;
if(!vis[e2[i].v])
{
vis[e2[i].v]=;
q.push(e2[i].v);
}
}
}
}
void a_star(int s,int t)
{
if(s==t)k++;
priority_queue<Node> q;
Node u;u.from=s;u.g=;u.f=dis[s];
q.push(u);
while(!q.empty())
{
u=q.top();q.pop();
if(u.from==t)
{
cnt++;
if(cnt==k)
{
printf("%d",u.f);
flag=true;
return;
}
}
for(int i=head1[u.from];i;i=e1[i].pre)
{
Node v;
v.from=e1[i].v;
v.g=u.g+e1[i].t;
v.f=v.g+dis[e1[i].v];
q.push(v);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(i,x,y,z);
}
int s,t;
scanf("%d%d%d",&s,&t,&k);
spfa(t,s);
a_star(s,t);
if(!flag)printf("-1");
return ;
}

Remmarguts’ Date(poj 2449)的更多相关文章

  1. 【POJ】2449 Remmarguts' Date(k短路)

    http://poj.org/problem?id=2449 不会.. 百度学习.. 恩. k短路不难理解的. 结合了a_star的思想.每动一次进行一次估价,然后找最小的(此时的最短路)然后累计到k ...

  2. POJ 2449:Remmarguts' Date(A* + SPFA)

    题目链接 题意 给出n个点m条有向边,源点s,汇点t,k.问s到t的第k短路的路径长度是多少,不存在输出-1. 思路 A*算法是启发式搜索,通过一个估价函数 f(p) = g(p) + h(p) ,其 ...

  3. poj 2449 Remmarguts' Date (k短路模板)

    Remmarguts' Date http://poj.org/problem?id=2449 Time Limit: 4000MS   Memory Limit: 65536K Total Subm ...

  4. poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)

    http://poj.org/problem?id=2449 Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Subm ...

  5. POJ 2449 Remmarguts' Date (SPFA + A星算法) - from lanshui_Yang

    题目大意:给你一个有向图,并给你三个数s.t 和 k ,让你求从点 s 到 点 t 的第 k 短的路径.如果第 k 短路不存在,则输出“-1” ,否则,输出第 k 短路的长度. 解题思路:这道题是一道 ...

  6. POJ 2449 Remmarguts' Date (第k短路径)

    Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions:35025   Accepted: 9467 ...

  7. POJ——2449Remmarguts' Date(A*+SPFA)

    Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 26504   Accepted: 7203 ...

  8. 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)

    Charm Bracelet    POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...

  9. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...

随机推荐

  1. php pdo oracle

    <?php/** * Created by mestars. * User: mestars * Date: 6/13/16 * Time: 10:52 PM */header('Access- ...

  2. 385 Mini Parser 迷你解析器

    Given a nested list of integers represented as a string, implement a parser to deserialize it.Each e ...

  3. [转]ASP.NET MVC的帮助类HtmlHelper和UrlHelper

    本文转自:http://www.cnblogs.com/greatandforever/archive/2010/04/20/1715914.html?login=1 在ASP.NET MVC框架中没 ...

  4. 常用的几个Dos命令-持续更新中

    1.服务相关 (1).查看服务 C:\Windows\system32>net start 已经启动以下 Windows 服务: (2).启动服务 C:\Windows\system32> ...

  5. springboot与dubbo整合入门(三种方式)

    Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...

  6. Angular——路由参数

    基本介绍 在控制中注入$routeParams可以获取传递的参数 区别对比 angular中的路由是指#之后的内容,包括之后的?,而在之前的http地址中我们习惯性的将?放在前面 具体使用 1.形参 ...

  7. 浏览器的两种模式quirks mode 和strict mode

    关键字: javascript.quirks mode.strict mode 在看js代码时,有时会看到关于quirks mode(怪异模式)和strict mode(严格格式)的东西,一直也没深究 ...

  8. MFC窗体大小变化

    对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看.下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整. 首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数 ...

  9. 梦想CAD控件 2019.05.05更新

    下载地址: http://www.mxdraw.com/ndetail_20141.html 1. 增加vs2017版本控件 2. 增加windows触摸屏支持 3. 增加手写签名功能 4. 修改PL ...

  10. JavaScipt30(第三个案例)(主要知识点:css变量)

    承接上文 https://www.cnblogs.com/wangxi01/p/10641210.html,下面是第三个案例: 附上项目链接: https://github.com/wesbos/Ja ...