题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1253

所有的三元组的可能情况数有ans0=C(n,3)。然后减去不符合条件的情况数。

假设被黑边相连的点形成一个特殊的连通块,在一个大小为x的连通块形成的过程中,ans减去cal(x)=C(x,3)+(n-x)*C(x,2)

代码如下

#include<bits/stdc++.h>
using namespace std;
typedef long long LL; const int N=5e4+;
const int mod=;
int fa[N];
LL d[N];
LL ans,n; int Find(int x)
{
return x==fa[x]? x:fa[x]=Find(fa[x]);
}
int Union(int x,int y)
{
x=Find(x);y=Find(y);
fa[x]=y;
d[y]+=d[x];
}
void init()
{
for(int i=;i<=n;i++)
fa[i]=i,d[i]=;
} LL cal(LL x)
{
return x*(x-)*(x-)/+(n-x)*(x-)*x/;
} int main()
{
while(cin>>n)
{
init();
for(int i=;i<n;i++)
{
int a,b;
char ch;
cin>>a>>b>>ch;
if(ch=='b') Union(a,b);
}
ans=n*(n-)*(n-)/; //ans0=C(n,3)
for(int i=;i<=n;i++)
if(i==fa[i]) ans-=cal(d[i]);
cout<<ans%mod<<endl;
}
}

最新文章

  1. 4-iscsi
  2. Centos6下安装Hadoop2.6 问题总结
  3. [python]python中,使用traceback处理异常信息
  4. Android_TextView之跑马灯效果
  5. Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法
  6. 转:python webdriver API 之浏览器多窗口处理
  7. java从命令行接收多个数字,求和之后输出结果
  8. 设计模式(Design Patterns——可复用面向对象软件的基础
  9. webview javascript 注入方法
  10. 今日推荐(三)AndroidResideMenu类似QQ侧滑效果
  11. 全响应跨设备的Zoomla!逐浪CMS2 x2.0正式公布
  12. 国际化之ResourceBundle
  13. 那些年踩过的坑之:first-child伪类选择器
  14. Java文件流之练习
  15. .Net之用户控件笔记
  16. CoreData归纳使用
  17. three.js 实现全景以及优化(1)
  18. 扫码下单支持同桌单人点餐FAQ
  19. [Postman]捕获HTTP请求(14)
  20. Ajax csrf跨站请求伪造

热门文章

  1. Python之正则表达式(re模块)
  2. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
  3. [Leetcode] Binary search, DP--300. Longest Increasing Subsequence
  4. AES加密解密算法---java
  5. Python 基于TK 文本编辑器
  6. AppServ安装的一点小麻烦----
  7. mysql字符编码设置
  8. Random随机数种子生成,减少生成重复随机数的可能
  9. 如果导入的项目只有源码,可以将其他项目中的.classpath 和 .project复制到根目录下即可。
  10. 定制Android开发者专属T恤