做法:這個水的程度...不太像noi的難度啊...不妨設點1為根,dfs時順便求出以每個點為根的子樹中點的數量,記為s[i],求完之後回來就可以求出邊的費用了,因為任意一點i只有乙個父親,也只有一條連向父親的邊,所以我們算完乙個點就求出對應的連向父親的邊的費用,顯然cost=c*|s[i]-(n-s[i])|,然後統計總費用即可,注意使用long long。
以下是本人**:
#include #include #include #include #include #define ll long long
int n,first[1000010]=,tot=0;
bool vis[1000010]=;
ll s[1000010],ans=0;
struct edge e[2000010];
void insert(int a,int b,int d)
void treedp(int v)
}int main()
{ scanf("%d",&n);
for(int i=1,a,b,d;i
NOI 2011 道路修建
在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願 意修建恰好 n 1 條雙向道路。每條道路的修建都要付出一定的費用,這個費用等於道路長度乘以道路兩端 的國家個數之差的絕對值。例如,在下圖中,虛線所示道路兩...
NOI2011 道路修建
time limit 10 sec memory limit 128 mb submit 3967 solved 1367 submit status discuss 在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝...
NOI2011 道路修建
在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願 意修建恰好 n 1 條雙向道路。每條道路的修建都要付出一定的費用,這個費用等於道路長度乘以道路兩端 的國家 個數之差的絕對值。例如,在下圖中,虛線所示道路...