首页 > 试题广场 >

物流网络最优运输路径

[编程题]物流网络最优运输路径
  • 热度指数:74 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 512M,其他语言1024M
  • 算法知识视频讲解
一家大型物流公司负责规划一个覆盖多个城市的商品运输网络。
这个网络由一系列单向的运输路线组成,每条路线连接两个城市,并且执行一次运输任务可以产生一定的利润。

公司的目标是找出一条“最优运输链”。
一条运输链是指一个从起点城市出发,沿着运输路线依次经过多个城市的连续路径。
为了保证物流效率,运输链不能重复访问任何一个城市。

所有运输链都必须从“生产中心”开始。
“生产中心”是指那些只发货而不接收来自网络内其他城市货物的城市(即,在给定的路线图中,没有任何路线指向它)。

您的任务是帮助该公司找到能产生最大总利润的运输链。
如果存在多条运输链都能达到同样的最大利润,公司则偏好选择经过城市数量最多的那一条(即路径最长的那条)。

此外,如果运输网络中存在循环路线(例如,货物从城市 AB,再从 BC,最后又能从 C 送回 A),则整个运输网络被认为是设计不合理的,无法进行规划。

输入描述:
输入的第一行为一个整数 N,代表运输路线的总数量。

接下来的 N 行,每一行都包含三个整数 U_i, V_i, P_i,分别表示一条从城市 U_i 到城市 V_i 的单向路线,其产生的利润为 P_i

约束 :
城市编号 U_i, V_i 的取值范围为 0 \le U_i, V_i \le 999
路线利润 P_i 的取值范围为 8 \le P_i \le 10240
路线总数 N \le 1000


输出描述:
如果运输网络中存在循环路线,输出 -1 。
否则,输出两个用空格隔开的整数:第一个是可实现的最大总利润,第二个是在该利润下最长的运输链所经过的城市数量。
示例1

输入

3
0 1 128
1 2 128
1 3 32

输出

256 3
示例2

输入

3
0 1 128
1 2 128
2 0 128

输出

-1

备注:
本题由牛友@Charles 整理上传

这道题你会答吗?花几分钟告诉大家答案吧!