首页 技术 正文
技术 2022年11月6日
0 收藏 417 点赞 630 浏览 1229 个字

题目链接:https://vjudge.net/problem/POJ-1655

这个就是找树的重心,树的重心就是树里面找一个点,使得以这个点为树根的所有的子树中最大的子树节点数最小。题目应该讲的比较清楚了,直接看代码吧:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<vector>
#include<set>
#include<cstdio>
#include<string>
#include<deque>
using namespace std;
typedef long long LL;
#define eps 1e-8
#define INF 0x3f3f3f3f
#define maxn 200005
struct node{
int v,next;
}edge[maxn*];
int n,m,k,t,cnt;
int vis[maxn],head[maxn],dis[maxn];//dis[i]记录以点i为树根的树,它子树里面包含点最多的值
void init(){
memset(head,-,sizeof(head));
memset(vis,,sizeof(vis));
memset(dis,,sizeof(dis));
cnt=;
}
void add(int u,int v){
edge[++cnt].v=v;
edge[cnt].next=head[u];
head[u]=cnt;
}
int DFS(int u){//搜索以点u为根节点的树下面的所有节点数量(包括自己)并返回,同时求出dis[u]
vis[u]=true;
int sum_son=;//一开始儿子节点总数为0
for(int i=head[u];i!=-;i=edge[i].next){
int v=edge[i].v;
if(!vis[v]){
int s=DFS(v);//
sum_son+=s;//加上以v为根节点的子树的数量
dis[u]=max(dis[u],s);//求最大值
}
}
dis[u]=max(dis[u],n-sum_son-);//不在这棵树下面的所有非子树节点的数量,总数-儿子节点数-自己
return sum_son+;
}
int main()
{
scanf("%d",&t);
while(t--){
scanf("%d",&n);
init();
int u,v,w;
for(int i=;i<n;i++){
scanf("%d%d",&u,&v);
add(u,v);
add(v,u);
}
DFS();
int ans,max1=INF;
for(int i=;i<=n;i++){
if(dis[i]<max1||dis[i]==max1&&i<ans){
ans=i;
max1=dis[i];
}
}
printf("%d %d\n",ans,max1);
}
return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,020
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,772
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,850