#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n;
int a[N],b[N],w1[N],w2[N],fa[N],fb[N];
int finda(int x){
return fa[x]==x?x:fa[x]=finda(fa[x]);
}
int findb(int x){
return fb[x]==x?x:fb[x]=findb(fb[x]);
}
int main(){
freopen("0-1-Tree.in","r",stdin);
freopen("0-1-Tree.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
fa[i]=fb[i]=i;
w1[i]=w2[i]=1;
}
for(int i=1;i<n;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(z==1){
int a=finda(x),b=finda(y);
fa[a]=b;
w1[b]+=w1[a];
}
if(z==0){
int a=findb(x),b=findb(y);
fb[a]=b;
w2[b]+=w2[a];
}
}
long long ans=0;
for(int i=1;i<=n;i++){
int a=finda(i),b=findb(i);
ans=ans+1ll*w1[a]*w2[b]-1;
}
printf("%lld\n",ans);
return 0;
}