题目链接 :
i j k 可以相同 而且 距离%2 只有 0 1两种情况 我们考虑 因为要 d(i j)=d(i k)=d(j k) 所以我们只能找 要么三个点 任意两个点之间的距离都是 1 要么都是 0
所以我们先吧每个点到根节点的距离表示出来 找到有 x个 距离为1 y个距离为0 的点 当 选择距离是1 的时候 我们假设任选一个数 首先确定了 i 这个值 j 可以选x个数 k也可以选x个数 (因为包含了他自己本身的距离为 0) 然后又有 x 个数 所以 当选择 距离是1 的时候 答案是x^3 0 的情况同理
#includeusing namespace std;#define maxn 10010#define pii pair int dis[maxn];vector q[maxn];void dfs(int u,int fa,int z){ dis[u]=z; for(int j=0;j >n; memset(dis,0,sizeof(dis)); for(int j=0;j>x>>y>>z; q[x].push_back(pii(y,z)); q[y].push_back(pii(x,z)); } dfs(1,0,0); int x=0,y=0; for(int j=1;j<=n;j++){ if(dis[j]%2) x++; else y++; } //cout< <<" "< <