#include <bits/stdc++.h>   using namespace std;   const long long llINF = 9223372036854775807;   const int INF = 2147483647;   const int maxn = 2e5 + 7;   const int maxm = 5e4 + 7;   const long long mod = 1e9 + 7;   const double pi = acos(-1.0);   const double eps = 1e-12;   int n;   int fa[2][maxn];   int a[maxn], b[maxn];   int u[maxn], v[maxn], w[maxn];   long long ans;   void init() {     for (int j = 0; j < 2; j++)       for (int i = 0; i < maxn; i++) fa[j][i] = i;   }   int find(int x, int idx) {     return x == fa[idx][x] ? x : fa[idx][x] = find(fa[idx][x], idx);   }   void merge(int x, int y, int idx) { fa[idx][find(x, idx)] = find(y, idx); }   int main(int argc, char const *argv[]) {     scanf( %d , &n);     for (int i = 1; i <= n - 1; i++) scanf( %d%d%d , &u[i], &v[i], &w[i]);     init();     for (int i = 1; i <= n - 1; i++) {       if (w[i] == 0)         merge(u[i], v[i], 0);       else         merge(u[i], v[i], 1);     }     for (int i = 1; i <= n; i++) a[find(i, 0)]++;     for (int i = 1; i <= n; i++) b[find(i, 1)]++;     for (int i = 1; i <= n; i++) ans += 1ll * a[find(i, 0)] * b[find(i, 1)];     printf( %lld n , ans - n);     return 0;   }   