大意: 给定树, 求多少个三元组(i,j,k), 满足dis(i,j)=dis(j,k)=dis(k,i).

刚开始想复杂了, 暴力统计了所有的情况.

#include <iostream>
#include <queue>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std;
typedef long long ll; const int N = 1e4+10;
int n, dep[N];
struct _ {int to,w;};
vector<_> g[N];
int dp[N][2];
ll ans; void dfs(int x, int fa, int d) {
dep[x] = d, ++ans;
ll c00 = 0, c11 = 0;
for (_ e:g[x]) if (e.to!=fa) {
int y = e.to;
dfs(y,x,d+e.w&1);
ans += 6ll*c00*dp[y][0];
ans += 6ll*c11*dp[y][1];
ans += 6*dp[y][dep[x]];
ans += 12ll*dp[x][dep[x]]*dp[y][dep[x]];
ans += 6ll*dp[y][dep[x]]*(dp[y][dep[x]]-1)/2;
ans += 6ll*dp[x][!dep[x]]*dp[y][!dep[x]];
c00 += (ll)dp[y][0]*dp[x][0];
c11 += (ll)dp[y][1]*dp[x][1];
dp[x][0] += dp[y][0];
dp[x][1] += dp[y][1];
}
for (_ e:g[x]) if (e.to!=fa) {
int y = e.to;
ans += 6ll*dp[y][0]*(dp[y][0]-1)/2*(dp[x][0]-dp[y][0]);
ans += 6ll*dp[y][1]*(dp[y][1]-1)/2*(dp[x][1]-dp[y][1]);
}
++dp[x][dep[x]];
} int main() {
scanf("%d", &n);
REP(i,2,n) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
g[u].push_back({v,w});
g[v].push_back({u,w});
}
dfs(1,0,0);
printf("%lld\n", ans);
}

实际上可以发现所有路径都满足 奇奇奇 或 偶偶偶.

#include <iostream>
#include <queue>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std;
typedef long long ll; const int N = 1e4+10;
int n, dep[N];
struct _ {int to,w;};
vector<_> g[N];
int dp[N][2], ans[2]; void dfs(int x, int fa, int d) {
++ans[d];
for (_ e:g[x]) if (e.to!=fa) {
int y = e.to;
dfs(y,x,d+e.w&1);
}
} int main() {
scanf("%d", &n);
REP(i,2,n) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
g[u].push_back({v,w});
g[v].push_back({u,w});
}
dfs(1,0,0);
printf("%lld\n",(ll)ans[0]*ans[0]*ans[0]+(ll)ans[1]*ans[1]*ans[1]);
}

最新文章

  1. angualr 实现tab选项卡功能
  2. JS实战 &#183; 表格行颜色间隔显示,并在鼠标指定行上高亮显示
  3. HTML是什么?如何使用?
  4. BigDecimal 的roundMode 舍位模式
  5. golang json string remove field
  6. 291. Word Pattern II
  7. python【第十二篇】Mysql基础
  8. HDU 5805 - NanoApe Loves Sequence (BestCoder Round #86)
  9. CAPSPageMenu分页交互
  10. 重温Javascript(一)
  11. JS 点击复制按钮 将文字复制到手机剪贴板
  12. eclipse Maven Dependencies 黑色背景说明
  13. DLNA流媒体设置
  14. [PHP]PDO各方法在发生MYSQL断开时的反应
  15. 释放linux的buff/cache
  16. rsync 故障排查整理
  17. University Entrace Examination zoj1023
  18. 国内打不开onedrive,怎么办?
  19. googletest进行单元测试(使用cmake编译)
  20. mac 必备工具

热门文章

  1. docker运行puppeteer出现Page crash解决方案
  2. mac使用技巧汇总
  3. Qt:使用Model-View,动态的加载显示数据
  4. [转][C#].Net反编译利器
  5. js for (i=0;i&lt;a.length;a[i++]=0) 中等于0怎么理解?
  6. 前端 - 轮询, 长轮训, websocket
  7. C++ STL partial_sort_copy greater
  8. Qt编写数据可视化大屏界面电子看板6-窗体打开关闭
  9. double,float,BigDecimal类型数值的操作
  10. scikit-learn机器学习(四)使用决策树做分类,并画出决策树,随机森林对比