#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, par[N][2], sz[N][2];
long long ans;
int get_par(int u, int x) {
  return ~par[u][x] ? par[u][x] = get_par(par[u][x], x) : u;
}
void merge(int u, int v, int x) {
  u = get_par(u, x);
  v = get_par(v, x);
  if (u == v) return;
  sz[par[v][x] = u][x] += sz[v][x];
}
int main() {
  cin >> n;
  for (int u = 0; u < n; u++) {
    sz[u][0] = sz[u][1] = 1;
    par[u][0] = par[u][1] = -1;
  }
  for (int i = 1; i < n; i++) {
    int u, v, x;
    cin >> u >> v >> x;
    merge(--u, --v, x);
    merge(v, u, x);
  }
  for (int u = 0; u < n; u++)
    ans += 1LL * sz[get_par(u, 0)][0] * sz[get_par(u, 1)][1];
  cout << ans - n;
}
