# (Tree DP) Luo Gu P2986 [USACO10MAR] great cows gather Great Cow Gat ... (increase + / provincial election -)

Title Description

Bessie is planning the annual Great Cow Gathering for cows all across the country and, of course, she would like to choose the most convenient location for the gathering to take place.

Bessie is planning annual rallies cows, cows from across the country in the future to participate in this rally. Of course, she would choose the most convenient location to host this gathering.

Each cow lives in one of N (1 <= N <= 100,000) different barns (conveniently numbered 1..N) which are connected by N-1 roads in such a way that it is possible to get from any barn to any other barn via the roads. Road i connects barns A_i and B_i (1 <= A_i <= N; 1 <= B_i <= N) and has length L_i (1 <= L_i <= 1,000). The Great Cow Gathering can be held at any one of these N barns. Moreover, barn i has C_i (0 <= C_i <= 1,000) cows living in it.

Each cows living in N (1 <= N <= 100,000) in one farm, these farms are connected by road N-1, and can reach any other farm from a farm. I farm roads connecting A_i and B_i (1 <= A_i <= N; 1 <= B_i <= N), the length of L_i (1 <= L_i <= 1,000). N rally may be in any one place in farms. Further, each cow occupants of C_i (0 <= C_i <= 1,000) cows.

When choosing the barn in which to hold the Cow Gathering, Bessie wishes to maximize the convenience (which is to say minimize the inconvenience) of the chosen location. The inconvenience of choosing barn X for the gathering is the sum of the distances all of the cows need to travel to reach barn X (i.e., if the distance from barn i to barn X is 20, then the travel distance is C_i*20). Help Bessie choose the most convenient location for the Great Cow Gathering.

In selecting the location of the rally when, Bessie convenient to maximize the degree of hope (that is inconvenient to minimize the degree). For example, select the first X farm as a venue, it is inconvenient to the degree of each other in the cow barn to attend the rally's journey sum (for example, from the farm to reach the farm i X is 20, then the total distance is C_i * 20). Bessie help find the most convenient location to hold large rallies.

Consider a country with five barns with [various capacities] connected by various roads of varying lengths. In this set of barns, neither barn 3 nor barn 4 houses any cows.

1 3 4 5

@--1--@--3--@--3--@[2]

[1] |

2 | @[1] 2 Bessie can hold the Gathering in any of five barns; here is the table of inconveniences calculated for each possible location:

Gather ----- Inconvenience ------

Location B1 B2 B3 B4 B5 Total

1 0 3 0 0 14 17

2 3 0 0 0 16 19

3 1 2 0 0 12 15

4 4 5 0 0 6 15

5 7 8 0 0 0 15

If Bessie holds the gathering in barn 1, then the inconveniences from each barn are:

Barn 1 0 -- no travel time there!

Barn 2 3 -- total travel distance is 2+1=3 x 1 cow = 3 Barn 3 0 -- no cows there!

Barn 4 0 -- no cows there!

Barn 5 14 -- total travel distance is 3+3+1=7 x 2 cows = 14 So the total inconvenience is 17.

The best possible convenience is 15, achievable at by holding the Gathering at barns 3, 4, or 5.

Input Format

* Line 1: A single integer: N

* Lines 2..N+1: Line i+1 contains a single integer: C_i

* Lines N+2..2*N: Line i+N+1 contains three integers: A_i, B_i, and L_i

The first line: an integer N.

The second N + 1 line: first line i + 1 has an integer C_i

Second to N + 2 row 2 * N: Line i + N + 1 integers behavior 3: A_i, B_i, and L_i.

Output Format

* Line 1: The minimum inconvenience possible

The first line: a value representing the minimum value is not convenient.

Sample input and output

Input # 1
5 
1 
1 
0 
0 
2 
1 3 1 
2 3 2 
3 4 3 
4 5 3 
Output # 1
15 

Description / Tips

Thanks @ username already exists a translation

If you consider the location in order to enumerate each point as a rally

DFS is calculated using

Then followed Compare

Time complexity of O (n ^ 2)

But the range of n is too large, obviously overtime.

So, we should be how to optimize?

Take a look at the sample

Write pictures described here

By one O (n) is calculated, it is easy to get out

If you select No. 1 node, the answer is 17

Since O (n ^ 2) can not be solved within the calculated time

Is it possible to recurrence out of it?

It is clearly possible.

If you already know the time to observe the required node number 1

So, we can make the following assumptions:

① all cattle first reach the No. 1 node

3 ② length and his child node of the tree nodes need to return 1-> 3 path

③ In addition to the length of his node 3 and node requires subtrees proceeds 1-> 3 path

Through the above three things, we can launch any time a child nodes from parent

So, it is again calculated O (n) on it to launch a final answer

#include<iostream>
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define MAX 200100 #define ll long long inline ll read() { register ll x=0,t=1; register char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-'){t=-1;ch=getchar();} while(ch<='9'&&ch>='0'){x=x*10+ch-48;ch=getchar();} return x*t; } ll dis[MAX],C[MAX],Q[MAX],f[MAX],Sum,Ans=1000000000000000000; struct Line { ll v,next,w; }e[MAX]; ll h[MAX],cnt=1,N; inline void Add(ll u,ll v,ll w) { e[cnt]=(Line){v,h[u],w}; h[u]=cnt++; } //使用两遍DFS //第一遍以任意点为根节点计算一遍 //dis[i]表示以i为根的子树到根的距离之和 ll DFS(ll u,ll ff) { ll tot=0; for(ll i=h[u];i;i=e[i].next) { ll v=e[i].v; if(v!=ff) { ll s=DFS(v,u);//子树上牛的数量 dis[u]+=dis[v]+e[i].w*s;//统计 tot+=s;//牛的个数 } } return Q[u]=tot+C[u]; } //第二遍计算偏移后的值 //先可以假设走到当前节点的父节点 //再让当前自己点所有牛退回来,父节点的所有牛走过去即可 void DFS2(ll u,ll ff) { for(ll i=h[u];i;i=e[i].next) { ll v=e[i].v; if(v!=ff) { ll ss=e[i].w; f[v]=f[u]-Q[v]*ss+(Sum-Q[v])*ss; DFS2(v,u); } } } int main() { N=read(); for(ll i=1;i<=N;++i) C[i]=read(); for(ll i=1;i<=N;++i) Sum+=C[i];//统计牛的总数 for(ll i=1;i<N;++i) { ll u=read(),v=read(),w=read(); Add(u,v,w); Add(v,u,w); } DFS(1,1);//求出以1为聚集处的结果 DFS2(1,1);//求出其他的偏移值 for(ll i=1;i<=N;++i) Ans=min(Ans,f[i]); cout<<Ans+dis[1]<<endl; return 0; }

Guess you like

Origin www.cnblogs.com/little-cute-hjr/p/11440790.html