小K的疑惑
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

众所周知,小K是一只连NOIP2018初赛都没有过的蒟蒻,所以小K很擅长dfs+分块树,但是本题与dfs+分块树无关。

K现在心态爆炸了,因为小K被一道简单的数据结构题给卡住了,希望请你来解决它,但是小K又不想太麻烦你,于是将题面进行了简化(其实是出题人懒得写题面了233333

    Bob有𝑁个点的树,每条边的长度有一个边权,现在定义𝑑𝑖𝑠(𝑖,𝑗)代表第𝑖个点到第𝑗个点的距离模2之后的结果。问有多少(𝑖,𝑗,𝑘)满足,𝑑𝑖𝑠(𝑖,𝑗) = 𝑑𝑖𝑠(𝑗,𝑘) = 𝑑𝑖𝑠(𝑖,𝑘)


输入描述:

第一行一个整数𝑁代表点的数量。

接下来𝑁 − 1行每行三个数𝑠,𝑒,𝑑代表有一条在𝑠,𝑒之间长度为𝑑的边。

输出描述:

一行一个整数代表有多少对(𝑖,𝑗,𝑘)满足条件。
示例1

输入

复制
3
1 2 3
1 3 4

输出

复制
9

备注:

对于100%的数据,1 ≤ 𝑁 ≤ 10000,0 ≤ 𝑑 ≤ 233。