做课展网站,叶县建设局网站,知乎seo排名的搜软件,手机网站做安卓客户端1827: [Usaco2010 Mar]gather 奶牛大集会 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1129 Solved: 525 [Submit][Status][Discuss]Description Bessie正在计划一年一度的奶牛大集会#xff0c;来自全国各地的奶牛将来参加这一次集会。当然#xff0c;她会选择最方便的… 1827: [Usaco2010 Mar]gather 奶牛大集会 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1129 Solved: 525 [Submit][Status][Discuss] Description Bessie正在计划一年一度的奶牛大集会来自全国各地的奶牛将来参加这一次集会。当然她会选择最方便的地点来举办这次集会。每个奶牛居住在 N(1N100,000) 个农场中的一个这些农场由N-1条道路连接并且从任意一个农场都能够到达另外一个农场。道路i连接农场A_i和B_i(1 A_i N; 1 B_i N),长度为L_i(1 L_i 1,000)。集会可以在N个农场中的任意一个举行。另外每个牛棚中居住者C_i(0 C_i 1,000)只奶牛。在选择集会的地点的时候Bessie希望最大化方便的程度(也就是最小化不方便程度)。比如选择第X个农场作为集会地点它的不方便程度是其它牛棚中每只奶牛去参加集会所走的路程之和(比如农场i到达农场X的距离是20那么总路程就是C_i*20)。帮助Bessie找出最方便的地点来举行大集会。 考虑一个由五个农场组成的国家分别由长度各异的道路连接起来。在所有农场中3号和4号没有奶牛居住。 Input 第一行一个整数N * 第二到N1行第i1行有一个整数C_i * 第N2行到2*N行第iN1行为3个整数A_i,B_i和L_i。 Output * 第一行一个值表示最小的不方便值。 Sample Input 5110021 3 12 3 23 4 34 5 3 Sample Output 15 先把子树上所有点移动到根的值计算出来把移动到1的值设为初始答案发现如果一个孩子如果更优那么一定满足$2*siztot$显然只可能有一个孩子满足那就贪心地移动即可 #include cstdio
char buf[10000000], *ptr buf - 1;
inline int readint(){int n 0;char ch *ptr;while(ch 0 || ch 9) ch *ptr;while(ch 9 ch 0){n (n 1) (n 3) ch - 0;ch *ptr;}return n;
}
typedef long long ll;
const int maxn 100000 10;
struct Edge{int to, val, next;Edge(){}Edge(int _t, int _v, int _n): to(_t), val(_v), next(_n){}
}e[maxn * 2];
int fir[maxn] {0}, cnt 0;
inline void ins(int u, int v, int w){e[cnt] Edge(v, w, fir[u]); fir[u] cnt;e[cnt] Edge(u, w, fir[v]); fir[v] cnt;
}
int c[maxn];
ll f[maxn], siz[maxn], ans;
void dfs1(int u, int fa){f[u] 0;siz[u] c[u];for(int v, i fir[u]; i; i e[i].next){v e[i].to;if(v fa) continue;dfs1(v, u);f[u] f[v] siz[v] * e[i].val;siz[u] siz[v];}
}
void dfs2(int u, int fa){for(int v, i fir[u]; i; i e[i].next){v e[i].to;if(v fa) continue;if(siz[1] - 2 * siz[v] 0){ans (siz[1] - 2 * siz[v]) * e[i].val;dfs2(v, u);}}
}
int main(){fread(buf, sizeof(char), sizeof(buf), stdin);int N readint();for(int i 1; i N; i) c[i] readint();for(int u, v, w, i 1; i N; i){u readint();v readint();w readint();ins(u, v, w);}dfs1(1, 0);ans f[1];dfs2(1, 0);printf(%lld\n, ans);return 0;
} 转载于:https://www.cnblogs.com/ruoruoruo/p/7512378.html