Ural 1371. Cargo Agency
2013-11-27 11:49
295 查看
The author is lazy..
Code :
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 500010 int 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_JUDGE freopen("in.txt","r",stdin); #endif while(~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; }
相关文章推荐
- 1371. Cargo Agency
- URAL 1563. Bayan (STL map)
- URAL 2035. Another Dress Rehearsal (乱搞)
- URAL 1106. Two Teams (二分图)
- URAL 1019 Line Painting
- URAL 1720 Summit Online Judge
- URAL 1934 最短路变形
- URAL 1942 Attack at the Orbit
- URAL 1027 D++ Again
- URAL 1989 Subpalindromes(回文串 线段树 多项式hash)
- URAL2047 Maths (暴力打表 递推)
- URAL 1779 F - The Great Team 构造
- URAL 题目1553. Caves and Tunnels(Link Cut Tree 修改点权,求两点之间最大)
- 哈诺塔题型问题+uva10795+URAL 2029
- ural 1080. Map Coloring
- Ural 1109 Conference(最小路径覆盖数)
- URAL - 1416 Confidential(次小生成树)
- 【算法设计与数据结构】动态规划入门——URAL 1119 Metro
- URAL 1106 Two Teams
- 算法练习:URAL 1495 One-two, One-two 2