Ural 1371. Cargo Agency

来源:互联网 发布:出口产品责任险知乎 编辑:程序博客网 时间:2024/06/05 11:21

The author is lazy..



Code :

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<math.h>using namespace std;#define sf scanf#define pf printf#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)#define ll long long#define CLR(a) memset((a),0,sizeof((a)))#define bug(x) cerr << "line: " << __LINE__ << ' ' << #x << " =" << (x) << endl;#define nMax 500010int first[nMax],to[nMax],w[nMax],nxt[nMax],e;void addadge(int u,int v,int vl) {to[e]=v;w[e]=vl;nxt[e]=first[u];first[u]=e;e++;to[e]=u;w[e]=vl;nxt[e]=first[v];first[v]=e;e++;}ll ans;ll dp[nMax];int vis[nMax];ll son[nMax];void dfs(int u,int fa) {vis[u] = 1;dp[u] = 0;son[u] = 0;for(int i=first[u],v;i!=-1;i=nxt[i]) if(! vis[v = to[i]]) {dfs(v,u);dp[u] += dp[v] + son[v]*w[i];dp[v] += son[v]*w[i];son[u] += son[v];}son[u] ++;for(int i=first[u],v;i!=-1;i=nxt[i]) if(to[i] != fa) {v = to[i];ans += dp[v] * (son[u]-son[v]) * 2;}}int n;int main() {#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifwhile(~sf("%d",&n)){for(int i=1;i<=n;i++) vis[i]=0,first[i]=-1;e = 0;for(int i=1,a,b,c;i<n;i++){sf("%d%d%d",&a,&b,&c);addadge(a,b,c);}ans = 0;dfs(1,-1);pf("%.4lf\n",(double)1.0*ans/n/(n-1));}return 0;}


原创粉丝点击