hdu 4705 dfs统计更新节点信息
2013-08-22 19:38
288 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705
View Code
#pragma comment(linker, "/STACK:16777216") #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <queue> #include <vector> using namespace std; const int maxn = 110010; long long dp[maxn]; vector<int> G[maxn]; long long num[maxn]; long long N; long long ans; void dfs(int u,int fa){ for(int i=0;i<G[u].size();i++){ int v = G[u][i]; if(v == fa) continue; dfs(v,u); num[u] += num[v]; } long long numfa = N - num[u]; for(int i=0;i<G[u].size();i++){ int v = G[u][i]; if(v == fa){ long long temp = num[u]-1; dp[u] += numfa * temp; continue; } long long temp = N - num[v] - 1; dp[u] += num[v] * temp; } ans += dp[u]; } int main() { // freopen("E:\\acm\\input.txt","r",stdin); while(cin>>N){ memset(dp,0,sizeof(dp)); for(int i=1;i<=N;i++) num[i] = 1; for(int i=1;i<=N;i++) G[i].clear(); int a,b; for(int i=1;i<=N-1;i++){ scanf("%d%d",&a,&b); G[a].push_back(b); G[b].push_back(a); } ans = 0; dfs(1,-1); long long MAX; MAX = N*(N-1)*(N-2); //N写成int,比赛时wa的太痛苦了,还是队友看出来了。以后要注意了。 cout<<(MAX-ans*3)/6<<endl; } return 0; }
View Code
相关文章推荐
- 数据库参数调优--自动更新统计信息
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- HDU1754 I Hate It(线段树基础题单节点更新区间查询)
- HDU 6044 Limited Permutation dfs 统计
- SQL Server索引统计信息未及时更新,导致排序混乱
- 更新oracle表的统计信息 GATHER_TABLE_STATS
- HDU 5274 Dylans loves tree(LCA+dfs时间戳+成段更新 OR 树链剖分+单点更新)
- 第十二章——SQLServer统计信息(1)——创建和更新统计信息
- PAT甲题题解-1004. Counting Leaves (30)-统计每层叶子节点个数+dfs
- hdu 1754(线段树单节点更新)
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
- HDU 1166 敌兵布阵——单节点更新的线段树
- hdu 1394 Minimum Inversion Number -求逆序对的个数- 线段树单节点更新
- hdu(1754)——I hate it(更新节点,区间最值)
- Trafodion 更新统计信息数据收集
- SQL Server 自动更新统计信息的基本算法
- SQL Server 统计信息的创建与更新
- http://acm.hdu.edu.cn/showproblem.php?pid=1754 更新节点,区间最值
- 关于更新SQLserver统计信息的存储过程
- HDU 3172 Virtual Friends (并查集节点统计)