#include<bits/stdc++.h>
using namespace std;
int f[2][200007],s[2][200007];//并查集,相邻点
int find_(int *f,int x){
    return f[x]==x?x:f[x]=find_(f,f[x]);
}
void add(int *f,int *s,int x,int y){
    x=find_(f,x);
    y=find_(f,y);
    if(x!=y)//不在一个联通块,将x并入y所在联通块中,将块内的相邻类型点数量更新
        f[x]=y,s[y]+=s[x];
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
        f[0][i]=f[1][i]=i;
        s[0][i]=s[1][i]=1;
    }
    int x,y,z;
    for(int i=1;i<n;++i){
        scanf("%d%d%d",&x,&y,&z);
        add(f[z],s[z],x,y);
    }
    long long ans=0;
    for(int i=1;i<=n;++i)
        ans+=1ll*s[0][find_(f[0],i)]*s[1][find_(f[1],i)]-1;
        //从i点出发,终点为0或1结点,共有x-1+y-1,从0结点出发经过i终点为1结点,共有(x-1)*(y-1),合计x*y-1
    printf("%lld",ans);
    return 0;
}

最新文章

  1. 兼容IE7音乐播放器之jplayer的使用
  2. [delphi]SetWindowsHookExA函数入口处修改
  3. spring缓存
  4. android 蓝牙设备监听广播
  5. (一)linux常见命令
  6. 安全攻城狮研发技能栈V1.0,附详细点评~
  7. 关于OJ上内存问题的试验
  8. 关于String的相关常见方法
  9. ajax访问controller,无法通过return $this-&gt;goHome()跳转
  10. SQL Server 插入含有中文字符串出现乱码现象的解决办法
  11. Day4 Python基础之数据类型(三)
  12. 9、js扩展
  13. SQL-触发器-011
  14. codeforces 980A Links and Pearls
  15. ★ prototype、__proto__ 详解
  16. 搭建ELK集群
  17. Docker容器学习与分享10
  18. Fib的奇怪定理 : gcd(F[n],F[m])=F[gcd(n,m)]
  19. 混乱之子第七季/全集Sons of Anarchy迅雷下载
  20. C++ STL vector(向量容器)的使用(附完整程序代码)

热门文章

  1. 第一篇:Git操作详解
  2. java错误:The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Bu
  3. 代码题(3)— 最小的k个数、数组中的第K个最大元素、前K个高频元素
  4. 批量处理JDBC语句提高处理速度
  5. Android之Widget学习总结
  6. python suds 调用webservice 缓存
  7. Gym 101142G : Gangsters in Central City(DFS序+LCA+set)
  8. android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库
  9. Apache Flume 1.6.0 发布,日志服务器
  10. Python xlrd、xlwt、xlutils修改Excel文件-OK