2017 ACM/ICPC Asia Regional Shenyang Onlin 1008

来源:互联网 发布:华泰交易软件下载 编辑:程序博客网 时间:2024/05/22 14:19
Problem Description
Kelukin is a businessman. Every day, he travels around cities to do some business. On August 17th, in memory of a great man, citizens will read a book named "the Man Who Changed China". Of course, Kelukin wouldn't miss this chance to make money, but he doesn't have this book. So he has to choose two city to buy and sell.
As we know, the price of this book was different in each city. It is aiyuan in it city. Kelukin will take taxi, whose price is 1yuan per km and this fare cannot be ignored.
There are n1 roads connecting n cities. Kelukin can choose any city to start his travel. He want to know the maximum money he can get.
 

Input
The first line contains an integer T (1T10) , the number of test cases.
For each test case:
first line contains an integer n (2n100000) means the number of cities;
second line contains n numbers, the ith number means the prices in ith city; (1Price10000)
then follows n1 lines, each contains three numbers x,y and z which means there exists a road between x and y, the distance is zkm(1z1000).
 

Output
For each test case, output a single number in a line: the maximum money he can get.
 

Sample Input
1 4 10 40 15 30 1 2 301 3 23 4 10
 

Sample Output
8
真的是一道很好的题.可以用网络流,最短路,树形DP等方法解决.DP不会.所以用那两个。
最简单的就是最短路思想. 建立一个源点,指向所有的城市,边权为书费. 之后求最长路,对于源点到所有点的最长路减去每个城市的卖假,求最大值即可。
我不知道为什么,我建立一个汇点,就会超时.可能是建立汇点会多遍历太多的边吧
 
阅读全文
0 0
原创粉丝点击