UVAlive 6756 Increasing Shortest Path
We all love short and direct problems, it is easier to write, read and understand the problem statement.
Here is one of these problems. \Life is too short to make a story", said Ahmed Aly.
You are given a weighted directed graph of N nodes (the nodes are numbered from 1 to N), where
the weights of the edges are distinct and positive. For each graph, you are also given a list of queries
to answer.
Each query will be represented by 3 integers A B C, which means you need to nd the shortest
path (the path with minimum sum of weights of its edges) which goes from node A to node B and uses
at most C edges, such that the weights of the edges in that path are in increasing order along the path,
which means the weight of each edge in that path should be greater than the weight of the edge before
it (unless it is the rst edge in the path).
Your task is to write a program which answers these queries.
Input
Your program will be tested on one or more test cases. The rst line of the input will be a single
integer T, the number of test cases (1 T 100). Followed by the test cases, the rst line of each
test case contains 3 integers separated by a single space N M Q (2 N 150), (0 M 3; 000) and
(1 Q 1; 000) representing the number of nodes, the number of edges and the number of queries,
respectively. Followed by M lines, each line contains 3 integers separated by a single space X Y Z
(1 X; Y N) (1 Z 3; 000) which represent an edge going from the node X to the node Y with
cost Z (X and Y will be different). Followed by Q lines, each line contains 3 integers separated by a
single space A B C (1 A;B N) (0 C M) which represent a query as described above (A and
B will be different).
Note that there might multiple edges between the same pair of nodes.
Output
For each test case, print a single line for each query which contains a single integer, the minimum sum
of weights for a path between the given pair of nodes which satises the given constraints, or `-1' if
there is no valid path between the given nodes which satises the given constraints. The output must
not contain empty lines between the cases.
Sample Input
1
8 9 3
1 2 1
2 3 2
3 4 3
4 5 12
5 8 7
1 6 8
6 4 9
1 7 5
7 4 4
1 4 2
1 4 3
1 4 1
Sample Output
17
6
-1
30秒 ,100个点,3000条边,1000次询问。
从x到y用的边数不超过b条而且每次走过的边的权值都要递增所需要的权值和。
先对边进行排序。
然后用dp[i][j][k] 表示 i -> j 用的边数等于 k 条 所需要的最少权值。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=;
const int M=;
const int inf = 1e9; struct node
{
int x,y,w;
bool operator < (const node &a)const{
return w<a.w;
}
}e[N]; int dp[M][M][M];
int n,m,q;
void update(int &a,int b){
if(a==-||b<a)a=b;
}
void run()
{
int x,y,b,w;
scanf("%d%d%d",&n,&m,&q);
memset(dp,-,sizeof(dp));
for(int i=;i<=n;++i)
dp[i][i][]=; for(int i=;i<m;++i)
{
scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w);
}
sort(e,e+m);
for(int i=;i<m;++i){
for(int j=;j<=n;++j){
for(int k=;k<n;++k){
if( dp[j][e[i].x][ k- ] != -){
update(dp[j][e[i].y][k],dp[j][e[i].x][k-]+e[i].w);
}
}
}
} for(int i=;i<q;++i){
scanf("%d%d%d",&x,&y,&b);
if(b >= n) b=n-;
int ans = -;
for(int j=;j<=b;++j){
if( dp[x][y][j] != -) update(ans,dp[x][y][j]);
}
printf("%d\n",ans);
}
}
int main()
{
int _;
scanf("%d",&_);
while(_--)run();
return ;
}
UVAlive 6756 Increasing Shortest Path的更多相关文章
- hdu-----(2807)The Shortest Path(矩阵+Floyd)
The Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- zoj 2760 How Many Shortest Path 最大流
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...
- The Shortest Path in Nya Graph
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en ...
- hdu 3631 Shortest Path(Floyd)
题目链接:pid=3631" style="font-size:18px">http://acm.hdu.edu.cn/showproblem.php?pid=36 ...
- Shortest Path(思维,dfs)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- Shortest Path
Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- (中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...
- 【ZOJ2760】How Many Shortest Path
How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...
- [Swift]LeetCode847. 访问所有节点的最短路径 | Shortest Path Visiting All Nodes
An undirected, connected graph of N nodes (labeled 0, 1, 2, ..., N-1) is given as graph. graph.lengt ...
随机推荐
- restTemplate工具类
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.sprin ...
- 本地主机访问远程linux系统服务器上的jupyter notebook
1,机器情况:服务器 centos python环境已经配置好了,在虚拟环境下安装了anaconda 并且在里面安装了jupyter notebook 2,主机是 windows ipytho ...
- Python开发—打包成exe
pychaim下PyInstaller 打包 python程序 使用PyCharm开发python Pyinstaller打包jieba项目相关解决方案 Python打包成exe 一.安装pyinst ...
- UVA 11178 Morley's Theorem (计算几何)
题目链接 lrj训练指南 P259 //==================================================================== Point getP( ...
- Python3及Pycharm安装
1.首先去python官网下载相应版本的Python安装包.如下: 2.下载完成后解压,双击exe文件进行安装,看到如下界面:Install Now表示默认安装:Customize installat ...
- Python配置模块:configparser参数含义
https://blog.csdn.net/CoderPai/article/details/80420698
- java Main方法 获取 maven 的resource 下的xml文件
Properties properties = new Properties(); File file = new File("src/main/resources/generator.xm ...
- 【面试题】JavaScript
第一题 合并 const a = { name: "zhangsan", age: 22 } const b = { name: "lisi", age: 55 ...
- php in_array()函数 语法
php in_array()函数 语法 作用:搜索数组中是否存在指定的值.大理石机械构件价格 语法:in_array(search,array,type) 参数: 参数 描述 search 必需.规定 ...
- codeforces_D. Treasure Hunting_[DP+Binary Search]
http://codeforces.com/contest/1201/problem/D 题意:n行m列的矩阵中,有k个targets,从[1, 1]出发,每次只能向上下左右四个方向移动一步,且只有在 ...