博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[poj2449]Remmarguts' Date(spfa+A*)
阅读量:5329 次
发布时间:2019-06-14

本文共 3551 字,大约阅读时间需要 11 分钟。

转载请注明出处:           ——by fraud

 

 

 

Remmarguts' Date
Time Limit: 4000MS   Memory Limit: 65536K
Total Submissions: 21855   Accepted: 5958

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 21 2 52 1 41 2 2

Sample Output

14

题意:求第K短路

分析:spfa+A*

先spfa反向求最短路,然后根据A*来搞,f(x)=g(x)+h(x)

h(x)表示从终点反向到x点的最短距离,g(x)表示从起点到x的当前距离,在终点出队K次的时候所求的距离即为第K短路。

即我们每次都优先查找当前总的路程最短的路径,则在终点出队K次之后,即为第k短路了

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 using namespace std; 22 #define XINF INT_MAX 23 #define INF 0x3FFFFFFF 24 #define MP(X,Y) make_pair(X,Y) 25 #define PB(X) push_back(X) 26 #define REP(X,N) for(int X=0;X
=L;X--) 29 #define CLR(A,X) memset(A,X,sizeof(A)) 30 #define IT iterator 31 typedef long long ll; 32 typedef pair
PII; 33 typedef vector
VII; 34 typedef vector
VI; 35 int s ,t,k; 36 const int maxn=1010; 37 vector
G[maxn]; 38 vector
rG[maxn]; 39 int dis[maxn]; 40 int used[maxn]; 41 void init(int n) 42 { 43 memset(used,0,sizeof(used)); 44 for(int i=0;i
q; 58 q.push(t); 59 used[t]=1; 60 dis[t]=0; 61 while(!q.empty()) 62 { 63 int u=q.front(); 64 for(int i=0;i
,vector
>,greater
> >q; 85 q.push(make_pair(dis[s],make_pair(0,s))); 86 CLR(used,0); 87 while(!q.empty()) 88 { 89 pair
p=q.top(); 90 q.pop(); 91 int f=p.first; 92 int g=p.second.first; 93 int u=p.second.second; 94 used[u]++; 95 if(used[t]==k)return f; 96 if(used[u]>k)continue; 97 for(int i=0;i
>n>>m)111 {112 int u,v,w;113 init(n);114 for(int i=0;i
>u>>v>>w;117 add_edge(--u,--v,w);118 }119 cin>>s>>t>>k;120 s--;t--;121 spfa();122 if(s==t)k++;123 cout<
<
代码君

 

转载于:https://www.cnblogs.com/fraud/p/4160419.html

你可能感兴趣的文章
无线通信基础(一):无线网络演进
查看>>
如何在工作中快速成长?阿里资深架构师给工程师的10个简单技巧
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于cocoa 运行时runtime
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
asp.net 写入excel时,不能更新。数据库或对象为只读。
查看>>
linux清空日志文件内容 (转)
查看>>
jsp中对jstl一些标签的引用方式
查看>>
mkdir命令(转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>
css3学习笔记之背景
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
查看>>
[dpdk] 熟悉SDK与初步使用 (二)(skeleton源码分析)
查看>>
Ajax : load()
查看>>
分布式版本控制系统
查看>>
HTTP与HTTPS的区别
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
MySQL-EXPLAIN执行计划字段解释
查看>>
Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)
查看>>