CodeForces-Begginer's Zelda

题目


做题思路

一开始 我想到了数图中的分叉,因为每次缩点,,题外话这里让我想起了缩

点用tarjan不过这没什么用,都只能走树杈的一边,另一边只能等下一次了

,于是我开始想是不是跟树杈数有关,结果发现可能是吧


,比如说上图树杈是2-9-1,6-7-8和最大的4-11-2,刚好3个,然后思维就错

了,比如说此题来个5-11-12的叉,还是需要3次就行了,后面我又想是不是一

层一层模拟,额,就是越想越乱


对于题中为什么不连11 是有误导的 不过这没什么 应该连上的,真正做法应该是数叶子数,因为我们每次将两个没有儿子的叶子合并在一块了,贪心嘛,争取多弄几个一次性,记得ceil

代码实现

#include<iostream>
#include<math.h>
#include<cstring>
using namespace std;
int siz[100005];
int t;
int n;
int a,b;
int flag;
int main()
{
	cin>>t;
	while(t--)
	{cin>>n;
		memset(siz,0,sizeof siz);
		flag=0;
	for(int i=1;i<n;i++)
	{
		cin>>a>>b;
		siz[a]++;
		siz[b]++;
	}
		for(int i=1;i<=n;i++)
		{
			if(siz[i]==1)flag++;
		}
		cout<<ceil(flag*1.0/2)<<endl;
		
	}
	
	
	
	
	return 0;
}

cf上的题目真的蛮好的,人类精华属于是




题外话
虽然这道题也可以水个题解,不过我真的改题解改怕了,每天上洛谷第一时间眼睛往右上方瞟,看看有没通知,上一篇题解我改了12天,改的我神经衰弱了,现在只想题解随便什么格式写,怎么舒服怎么写,不想水题解了,累死我了...我发烧的时候还在改题解,改的想把电脑砸了

posted @ 2025-04-16 20:30  LteShuai  阅读(2)  评论(0)    收藏  举报