51nod_1253:Kundu and Tree(组合数学)
2024-10-20 05:25:28
题目链接: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;
}
}
最新文章
- 4-iscsi
- Centos6下安装Hadoop2.6 问题总结
- [python]python中,使用traceback处理异常信息
- Android_TextView之跑马灯效果
- Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法
- 转:python webdriver API 之浏览器多窗口处理
- java从命令行接收多个数字,求和之后输出结果
- 设计模式(Design Patterns——可复用面向对象软件的基础
- webview javascript 注入方法
- 今日推荐(三)AndroidResideMenu类似QQ侧滑效果
- 全响应跨设备的Zoomla!逐浪CMS2 x2.0正式公布
- 国际化之ResourceBundle
- 那些年踩过的坑之:first-child伪类选择器
- Java文件流之练习
- .Net之用户控件笔记
- CoreData归纳使用
- three.js 实现全景以及优化(1)
- 扫码下单支持同桌单人点餐FAQ
- [Postman]捕获HTTP请求(14)
- Ajax csrf跨站请求伪造
热门文章
- Python之正则表达式(re模块)
- 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
- [Leetcode] Binary search, DP--300. Longest Increasing Subsequence
- AES加密解密算法---java
- Python 基于TK 文本编辑器
- AppServ安装的一点小麻烦----
- mysql字符编码设置
- Random随机数种子生成,减少生成重复随机数的可能
- 如果导入的项目只有源码,可以将其他项目中的.classpath 和 .project复制到根目录下即可。
- 定制Android开发者专属T恤