Remmarguts' Date
Time Limit: 4000MS   Memory Limit: 65536K
Total Submissions: 25216   Accepted: 6882

Description

"Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. Softly touching his little ducks' head, he told them a story.

"Prince Remmarguts lives in his kingdom UDF – United Delta of Freedom. One day their neighboring country sent them Princess Uyuw on a diplomatic mission."

"Erenow, the princess sent Remmarguts a letter, informing him that she would come to the hall and hold commercial talks with UDF if and only if the prince go and meet her via the K-th shortest path. (in fact, Uyuw does not want to come at all)"

Being interested in the trade development and such a lovely girl, Prince Remmarguts really became enamored. He needs you - the prime minister's help!

DETAILS: UDF's capital consists of N stations. The hall is numbered S, while the station numbered T denotes prince' current place. M muddy directed sideways connect some of the stations. Remmarguts' path to welcome the princess might include the same station twice or more than twice, even it is the station with number S or T. Different paths with same length will be considered disparate.

Input

The first line contains two integer numbers N and M (1 <= N <= 1000, 0 <= M <= 100000). Stations are numbered from 1 to N. Each of the following M lines contains three integer numbers A, B and T (1 <= A, B <= N, 1 <= T <= 100). It shows that there is a directed sideway from A-th station to B-th station with time T.

The last line consists of three integer numbers S, T and K (1 <= S, T <= N, 1 <= K <= 1000).

Output

A single line consisting of a single integer number: the length (time required) to welcome Princess Uyuw using the K-th shortest path. If K-th shortest path does not exist, you should output "-1" (without quotes) instead.

Sample Input

2 2
1 2 5
2 1 4
1 2 2

Sample Output

14
  
  这题就是求K短路,裸的模板题~~~
 #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std; const int MAXN=,MAXM=;
int cnt,fir[MAXN],nxt[MAXM],to[MAXM],val[MAXM];
int rcnt,rfir[MAXN],rnxt[MAXM],rto[MAXM],rval[MAXM];
int dis[MAXN];
struct A{
int f,g,dot;
bool operator <(const A a)const{
return a.f<f;
}
}; void raddedge(int a,int b,int v)
{
rnxt[++rcnt]=rfir[a];rto[rcnt]=b;rfir[a]=rcnt;rval[rcnt]=v;
} void addedge(int a,int b,int v)
{
nxt[++cnt]=fir[a];to[cnt]=b;fir[a]=cnt;val[cnt]=v;
raddedge(b,a,v);
}
int vis[MAXN];
void Spfa(int src)
{
queue<int>q;
memset(dis,,sizeof(dis));
memset(vis,,sizeof(vis));
dis[src]=;vis[src]=;q.push(src);
while(!q.empty())
{
int node=q.front();q.pop();vis[node]=;
for(int i=rfir[node];i;i=rnxt[i])
if(dis[rto[i]]>dis[node]+rval[i]){
dis[rto[i]]=dis[node]+rval[i];
if(!vis[rto[i]])
q.push(rto[i]);
vis[rto[i]]=;
}
}
} int Astar(int s,int t,int k)
{
int cont=;
priority_queue<A>Q;
if(dis[s]==dis[])return -;
if(s==t)k++;
Q.push((A){dis[s],,s});
A node;
while(!Q.empty())
{
node=Q.top();Q.pop();
if(node.dot==t&&++cont==k)
return node.f;
for(int i=fir[node.dot];i;i=nxt[i])
Q.push((A){dis[to[i]]+node.g+val[i],node.g+val[i],to[i]});
}
return -;
} void Init()
{
cnt=rcnt=;
memset(fir,,sizeof(fir));
memset(rfir,,sizeof(rfir));
}
int main()
{
int x,y,k,n,m,v,s,t;
while(~scanf("%d%d",&n,&m)){
Init();
for(int i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&v);
addedge(x,y,v);
}
scanf("%d%d%d",&s,&t,&k);
Spfa(t);
printf("%d\n",Astar(s,t,k));
}
return ;
}

图论(A*算法,K短路) :POJ 2449 Remmarguts' Date的更多相关文章

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

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

  2. poj 2449 Remmarguts' Date(K短路,A*算法)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013081425/article/details/26729375 http://poj.org/ ...

  3. POJ 2449 Remmarguts' Date (K短路 A*算法)

    题目链接 Description "Good man never makes girls wait or breaks an appointment!" said the mand ...

  4. POJ 2449 Remmarguts' Date(第k短路のA*算法)

    Description "Good man never makes girls wait or breaks an appointment!" said the mandarin ...

  5. POJ 2449 Remmarguts' Date ( 第 k 短路 && A*算法 )

    题意 : 给出一个有向图.求起点 s 到终点 t 的第 k 短路.不存在则输出 -1 #include<stdio.h> #include<string.h> #include ...

  6. poj 2449 Remmarguts' Date K短路+A*

    题目链接:http://poj.org/problem?id=2449 "Good man never makes girls wait or breaks an appointment!& ...

  7. POJ 2449 - Remmarguts' Date - [第k短路模板题][优先队列BFS]

    题目链接:http://poj.org/problem?id=2449 Time Limit: 4000MS Memory Limit: 65536K Description "Good m ...

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

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

  9. poj 2449 Remmarguts' Date 第k短路 (最短路变形)

    Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 33606   Accepted: 9116 ...

随机推荐

  1. 【转载】ASP.NET支持多语言

    ASP.NET 2.0中实现:1.使用工具自动生成本地化资源(LocalResources) 首先建立一个WEB工程,如图所示:双击Default.aspx,切换到[设计]视图,从工具箱里拖一个But ...

  2. list-style无颜色问题解决,list-style-type无颜色解决

    list-style无颜色问题解决,list-style-type无颜色解决 >>>>>>>>>>>>>>>& ...

  3. order by 自定义排序

    使用order by排序,有时候不是根据字符或数字顺序,而是根据实际要求排序. 例如有客户A,B,C,我希望排序结果是B,C,A,那么就要通过自定义的规则排序. 第一种方法,可以构造一张映射表,将客户 ...

  4. EntityFramework 中生成的类加注释

    EF5在生成实体类时获取不到数据库中表的说明字段,需要使用单独的t4模板来获取 下载文件 将文件与edmx 放同一文件夹 1.在生成类的t4模板中加入 <#@ include file=&quo ...

  5. android入门系列- TextView EditText Button ImageView 的简单应用

    第一篇原创,其实自己就是一菜鸟,简单分享点基本知识吧.希望能有所帮助吧. TextView EditText Button ImageView 这几个控件可能是Android开发中最常用.最基本的几个 ...

  6. Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)

    CoreLocation是iOS中一个提供设备定位的框架.通过这个框架可以实现定位处理,从而获取位置数据,比如经度.纬度.海拔信息等.   1,定位精度的设置 定位服务管理类CLLocationMan ...

  7. Ubuntu14.04 Tomcat 安装过程记录

    Ubuntu14.04 Tomcat 安装过程记录 检查java的版本 zhousp@ubuntu:~$ sudo java -version [sudo] password for zhousp: ...

  8. VS2010 Cstring to int

    今天遇到一个将Cstring转化为int的问题,用atoi(),发现不可以,找了一下原因. 原来因为在VS2015(2010)的版本中是UNICODE ,请使用这个函数 _ttoi() . CStri ...

  9. Linux下ln链接命令详解

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...

  10. 《tr命令》-linux命令五分钟系列之六

    本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...