当前位置: 首页 > news >正文

ABC378

F - Add One Edge 2

题意:一颗有n个顶点的树,第i条边双向连接顶点ui和vi,在给定的树上添加一条不定向边,总能得到一个正好有一个循环的图。在这些图中,有多少个满足所有顶点都有阶数3

分析:每次阶数为3的dfs找阶数为2的个数,两个阶数为2的即可凑出循环图,所以满足条件的个数为cnt*(cnt-1)/2

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
const int N=2e5+10;
vector<int>G[N];
int n;
int deg[N];
bool vis[N];
int cnt=0;
ll ans=0;
void dfs(int v,int fa=0){//无父节点 fa=0作初始值if(deg[v] != 3){//由于作为可连接的点 可能连接了多个联通块不打标记cnt += (deg[v]==2);return;}vis[v] = 1;for(auto x:G[v]){//x是节点v相连的if(x == fa) continue;dfs(x,v);}
}
void sol(){cin>>n;for(int i = 1;i < n;++i){int u,v;cin>>u>>v;G[u].push_back(v);G[v].push_back(u);++deg[u];++deg[v];}for(int i=1;i<=n;++i){// 找 deg=3 的连通块if(deg[i] != 3) continue;if(vis[i]) continue;cnt = 0;dfs(i);ans += cnt*(cnt-1)/2;}cout<<ans<<"\n";    
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int t;t=1;for(int i=1;i<=t;i++)sol();return 0;
}
​

http://www.mrgr.cn/news/66987.html

相关文章:

  • 基于LabVIEW应用ARINC 429板卡实现数据通讯——(下篇)
  • nodejs入门教程4:nodejs创建第一个应用
  • 模板
  • 2024-11-04 问AI: [AI面试题] 解释计算机视觉的概念
  • STM32实现串口接收不定长数据
  • 大学适合学C语言还是Python?
  • 字段值为null就不返回的注解
  • 运动控制 编码器测速
  • JDK 安装、环境变量配置、nano 和 vim 的使用
  • 技术总结(二十一)
  • 2024毕业论文攻略:AI工具能为你带来哪些惊喜?
  • Halcon 从XML中读取配置参数
  • 聊一聊SpringBoot的自动装配原理
  • 去除人声的利器:消音伴奏软件合集
  • AB 罗克韦尔模块 SD3K2004K
  • img图片为null或错误时替换为静态图片
  • 项目范围产品范围
  • C++ 项目中使用 .dll 和 .def 文件的操作指南
  • watch与computed的区别、运用的场景
  • PCIe板卡的标准尺寸介绍
  • 7篇Python爬虫实例,直接代码可运行,全网最全,注释超详细(适合收藏)——2、爬取图片信息。
  • Pimpl(Pointer to Implementation)模式详解
  • PMP--入栏需看
  • C++:多态中的虚/纯虚函数,抽象类以及虚函数表
  • 逻辑漏洞验证码识别
  • 2024中国国际数字经济博览会:图为科技携明星产品引领数智化潮流