首页 > 其他分享 >做题记录整理图论2 P6591. [YsOI2020] 植树(2022/10/3)

做题记录整理图论2 P6591. [YsOI2020] 植树(2022/10/3)

时间:2022-10-04 20:11:06浏览次数:70  
标签:10 YsOI2020 int P6591 add 植树 for1

P6591. [YsOI2020] 植树

是一道相对比较简单的题,但是为什么还要对它进行总结呢?

因为里面有一种先固定一个根来算子树大小,之后再进行计算的想法我之前似乎没有做过类似的题

#include<bits/stdc++.h>
#define for1(i,a,b) for(int i = a;i<=b;i++)
#define ll long long
#define mp(a,b) make_pair(a,b)
using namespace std;

struct node{
	int nex;
	int to;
	
}a[10000005];
int n,vis[10000005],cnt,hd[10000005],dep[10000005];
void add(int x,int y)
{
	a[++cnt].to=y;
	a[cnt].nex=hd[x];
	hd[x]=cnt;
}
int dfs(int x,int fa)
{
	vis[x]=1;
	int ji=0;
	for(int i=hd[x];i;i=a[i].nex)
	{
		int v=a[i].to;
		if(v==fa) continue;
		dep[x]+=dfs(v,x);
		if(!ji) ji=dep[v];
		if(ji!=dep[v]) vis[x]=0;
	}
	dep[x]++;
	if(x!=1&&ji&&ji!=n-dep[x]) vis[x]=0;
	return dep[x];
}
int main()
{
	cin>>n;
	int x,y;
	for1(i,1,n-1)
	{
		scanf("%d%d",&x,&y);
		add(x,y);
		add(y,x);
	}
	dfs(1,0);
	
	for1(i,1,n)
		if(vis[i])
			printf("%d ",i);
	return 0;
}

标签:10,YsOI2020,int,P6591,add,植树,for1
From: https://www.cnblogs.com/yyx525jia/p/16754361.html

相关文章

  • ElasticSearch-7.10版本最新万字长文教程【距离搞懂ELK核心你只差这一片文章】
    ES万字长文教程​​一、认识ELK、ES​​​​1.什么是ELK?​​​​2.什么是ElasticSearch​​​​3.ElasticSearch下载安装教程​​​​二、索引的CRUD​​​​1.创建索引​​......
  • 做题记录整理图论1 P3629 [APIO2010] 巡逻(2022/10/3)
    P3629[APIO2010]巡逻写一道题顶写三道题系列,为了写这道题专门去学习了树的直径的两种求法,可以说是血赚了https://www.luogu.com.cn/blog/lscsznmhw/solution-p3629......
  • 2022.10.4
    考试,大概7、8名,基本是按流程来的了。还是有些问题,感觉很多题莫名奇妙没转过弯,拿了很高的部分分但距离正解还有距离。CF做少了QaQTodo:考试,改题(至少前三道)。把CF的E题和......
  • 10.4 第三问
    (1)统计每天各个机场的销售数量和销售金额。要求的输出字段day_id,sale_nbr,,cnt,round日期编号,卖出方代码,数量,金额。命令:查询语句:selectday_id,sale_nbr,sum(cnt),sum......
  • 10.4训练
    输入schematool-initSchema-dbTypemysql-verbose初始化hive元数据库hive建表createtabletest0(day_idstring,sale_nbrstring,buy_nbrstring,cntint,roun......
  • 10.4
    bin/sqoopexport>--connectjdbc:mysql://master:3306/mysql>--usernameroot>--password000000>--tabletable3>--num-mappers1>--export-dir/user/hive/......
  • 43rd 2022/10/4 模拟赛总结30
    这次还行?rank5,其实也不是多高不可攀,就是认真打,暑假时就上过前五好多次其实比赛历程也很简单第一题很忽悠,思路乱的一批,但是这次冷静下来把思路理清就切了很简单的概率D......
  • English words1004
    ......
  • 初学C语言笔记221004动态内存管理
    constint*consta=&b;//3intconst*consta=&b;//4第三个a是静态的指针(第二个const修饰),指向int,这个int是静态的(第一个const修饰)第四个a是静态的......
  • 2022.10.04考试总结
    2022.10.04考试总结得分:\(110/300\)总结:今天的第一题比较简单,第二题因为看错题意并且思考了比较长的时间导致爆零,第三题在考场上没有一个比较完整并且容易实现的思路题......