jzoj3630 【汕头市选2014】分叉(树上统计)
2018-01-31 19:31
417 查看
【汕头市选2014】分叉(fork)
Description
给出一棵N 个点的树,点的编号是1, 2,。。。,N。
对于3 个点{a,b,c},如果不存在一条简单路径同时经过a,b,c,那么{a,b,c}是一个分叉。
统计不同分叉的数量。
树 无环,连通的无向图
简单路径 不重复经过同一个点的路径
Input
第1 行,1 个整数N。接下来(N -1) 行,每行2 个整数Ai,Bi,表示点Ai 和点Bi 间有一条边。
Output
1 个整数,表示所求的值。
Sample Input
5
1 2
1 3
1 4
1 5
Sample Output
4
Data Constraint
• 对于30% 的数据,N <= 100;
• 对于50% 的数据,N <= 1000;
• 对于100% 的数据,1 <= N <= 10^5。
分析:总方案数减去非法方案数即可。
代码
Description
给出一棵N 个点的树,点的编号是1, 2,。。。,N。
对于3 个点{a,b,c},如果不存在一条简单路径同时经过a,b,c,那么{a,b,c}是一个分叉。
统计不同分叉的数量。
树 无环,连通的无向图
简单路径 不重复经过同一个点的路径
Input
第1 行,1 个整数N。接下来(N -1) 行,每行2 个整数Ai,Bi,表示点Ai 和点Bi 间有一条边。
Output
1 个整数,表示所求的值。
Sample Input
5
1 2
1 3
1 4
1 5
Sample Output
4
Data Constraint
• 对于30% 的数据,N <= 100;
• 对于50% 的数据,N <= 1000;
• 对于100% 的数据,1 <= N <= 10^5。
分析:总方案数减去非法方案数即可。
代码
#include <cstdio> #define N 400000 #define ll long long #pragma GCC optimize(3) using namespace std; struct arr { int from,to,nxt; }a ; int size ,ls ,l,n,dfn ; ll ans,f ,sb; void add(int x,int y) { a[++l].to=y; a[l].from=x; a[l].nxt=ls[x]; ls[x]=l; } void dfs(int x,int fa) { size[x]++; dfn[x]=sb++; for (int i=ls[x];i;i=a[i].nxt) if (a[i].to!=fa) { dfs(a[i].to,x); size[x]+=size[a[i].to]; } } int main() { freopen("fork.in","r",stdin); freopen("fork.out","w",stdout); scanf("%d",&n); for (int i=1;i<n;i++) { int x,y; scanf("%d%d",&x,&y); add(x,y); add(y,x); } sb=1; dfs(1,0); for (int i=1;i<=n;i++) ans+=1LL*(size[i]-1)*(n-size[i]); ll ans1=0; for (int i=1;i<=n;i++) for (int j=ls[i];j;j=a[j].nxt) if (dfn[a[j].to]>dfn[i]) ans1+=1LL*size[a[j].to]*(size[i]-size[a[j].to]-1); ll sum=1LL*n*(n-1)*(n-2)/6; printf("%lld",sum-ans-ans1/2); fclose(stdin); fclose(stdout); }
相关文章推荐
- 【jzoj3630】【汕头市选2014】【分叉】【树形动态规划】
- 【汕头市选2014】分叉 jzoj 3630 dfs
- JZOJ3630. 【汕头市选2014】分叉(fork)
- JZOJ3632【汕头市选2014】舞伴(perm)
- 【汕头市选2014】舞伴 jzoj 3632 状压dp
- 【JZOJ3633】【汕头市选2014】数数(count) (栈)
- JZOJ 3631. 【汕头市选2014】三角(triangle)
- jzoj 3631 【汕头市选2014】三角(triangle)
- jzoj3667 【HNOI2014】世界树(worldtree) (虚树上dp)
- 【汕头市选2014】分叉(fork)
- JZOJ 3632. 【汕头市选2014】舞伴
- 【jzoj3632】【汕头市选2014】【舞伴】【状态压缩动态规划】
- 【汕头市选2014】分叉(fork)
- jzoj P1842【汕头市选2014】平均
- jzoj P1843【汕头市选2014】小球
- jzoj P1845【汕头市选2014】约数
- JZOJ 1842——【汕头市选2014】平均
- JZOJ 5230. 【NOIP2017模拟A组模拟8.5】队伍统计
- [JZOJ3431]【GDOI2014模拟】网格
- JZOJ 3809. 【NOIP2014模拟8.25】设备塔