给定一棵树,求有多少无序三元组(x,y,z)满足x,y,z互不相等且Dis(x,y)=Dis(y,z)=Dis(x,z)
枚举中心点,分别dfs,计算答案
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 5050 using namespace std; struct abcd{ int to,next; }table[M<<1]; int head[M],tot; int n; long long ans; int temp[M],f[M],g[M]; void Add(int x,int y) { table[++tot].to=y; table[tot].next=head[x]; head[x]=tot; } void DFS(int x,int from,int dpt) { int i; temp[dpt]++; for(i=head[x];i;i=table[i].next) if(table[i].to!=from) DFS(table[i].to,x,dpt+1); } int main() { int i,j,x,y; cin>>n; for(i=1;i<n;i++) { scanf("%d%d",&x,&y); Add(x,y);Add(y,x); } for(x=1;x<=n;x++) { memset(f,0,sizeof f); memset(g,0,sizeof g); for(i=head[x];i;i=table[i].next) { memset(temp,0,sizeof temp); DFS(table[i].to,x,1); for(j=1;j<=n;j++) { ans+=(long long)g[j]*temp[j]; g[j]+=f[j]*temp[j]; f[j]+=temp[j]; } } } cout<<ans<<endl; return 0; }
3.小奇的仓库
神奇的树形dp,听昕怡讲了一下,听着就蛋疼。
4.3626: [LNOI2014]LCA
不应该嘲笑LNOI.....
很神奇的题,很有 的风格(?)。
5 1018: [SHOI2008]堵塞的交通traffic
线段树维护区间信息
6【BZOJ】3319: 黑白树
时间: 2024-10-14 06:12:27