当前位置:网站首页>三角果计数
三角果计数
2022-08-09 00:12:00 【朴小明】
给一个n个节点的树, 三角果定义为一个包含3个节点的集合, 且他们两两之间的最短路长度a, b, c能够构成一个三角形。
做法:
和边权没什么关系,画画图发现一条链上所有点都不符合条件,得从这条链上有一个分支,才可以构成合法的。
枚举每个点作为下面这样子的中心节点:这里2是中心节点。
1
|
2
/ \
3 4
接下来是计数,假设先选上中心的上面的某个点,还有两个点在下面选;然后是三个点都在下面选。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6, mod = 998244353;
vector<int> v[N];
int sum[N];
int ans;
int n;
void dfs(int x, int fa)
{
sum[x] = 1;
for (auto i : v[x])
{
int y = i;
if (y == fa) continue;
dfs(y, x);
sum[x] += sum[y];
}
int num = sum[x] - 1;
for (auto i : v[x])
{
int y = i;
if (y == fa) continue;
ans += sum[y] * (num - sum[y]) * (n - sum[x]);
num -= sum[y];
}
num = sum[x] - 1;
int sum1 = 0;
for (auto i : v[x])
{
int y = i;
if (y == fa) continue;
ans += sum1 * sum[y] * (num - sum1 - sum[y]);
sum1 += sum[y];
}
}
signed main ()
{
cin >> n;
for (int i = 1; i <= n - 1; i++){
int x, y, z;
scanf("%lld%lld%lld", &x, &y, &z);
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1, 0);
cout << ans;
return 0;
}
边栏推荐
- 2018年蓝桥杯省赛本科B组-全球变暖(水漫金山)
- [深度学习] - 网络模型训练过程的 loss 变化分析 (loss / val_loss / test_loss)
- 蓝桥杯历届试题-合根植物(并查集)
- 将板子芯片从ST32F101改为STM32F103要改的地方
- 常用的正则表达式(不定期更新)
- VsCode configures your favorite fonts and backgrounds. Mom no longer worries about my boring code writing.
- 蓝牙模块HC-08——连接
- 【StoneDB Class】入门第三课:StoneDB 的安装编译
- 2021.10.7 2020 CCPC重现赛
- GaN图腾柱无桥 Boost PFC(单相)五-细节处理
猜你喜欢
随机推荐
矩阵乘法总结
ReflectCubeMap
Canvas绘图基础知识
常用的正则表达式(不定期更新)
Ubuntu下Docker安装Mysql (快速简便)
Mysql Workbench导出sql文件出错:Error executing task: ‘ascii‘ codec can‘t decode byte 0xd0 in position 26:
整流七 - 三相PWM整流器—公式推导篇
【Full arrangement】
C--《C和指针》第七章读书笔记
JS数据类型
vs2012快捷键
无代码平台邮箱入门教程
远程访问jupyter notebook
蓝桥杯历届试题-高僧斗法(博弈论)
为什么依赖注入出现的频率这么高?
Task19_14_最长公共前缀
整流九—双同步坐标系锁相原理
The difference between the apply and call in js and usage
蓝桥杯历届试题-合根植物(并查集)
C#未将对象引用设置到对象的实例