codeforces843C Upgrading Tree -- 构造
来源:互联网 发布:淘宝认证 编辑:程序博客网 时间:2024/05/21 08:03
传送门
题目大意:
给你一棵
要求对原树修改不超过
显然每个点都与根有一条边相连一定是最优的。
先找到原树的重心,将它作为根。令
可以发现如果根的一个儿子
然后考虑怎样使
对于点
这样一个点最多会修改
代码
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define N 200010struct Edge{ int t,nx;}e[N<<1];struct Node{ int x,y,z; Node(int x=0,int y=0,int z=0):x(x),y(y),z(z){}}a[N<<1];int Num,h[N],x,y;int i,j,k,n,m,p,f[N],s[N],S,Rt,l;int L;bool b[N];inline void Add(int x,int y){ e[++Num].t=y;e[Num].nx=h[x];h[x]=Num;}inline int Max(int x,int y){ return x<y?y:x;}inline void Dfs(int x,int y){ s[x]=1; for(int i=h[x];i;i=e[i].nx) if(e[i].t!=y&&!b[e[i].t]){ Dfs(e[i].t,x); s[x]+=s[e[i].t]; f[x]=Max(f[x],s[e[i].t]); } f[x]=Max(f[x],S-s[x]); if(f[x]<f[Rt])Rt=x;}inline void Dfs2(int x,int y){ if(y!=S){ a[++l]=Node(S,L,x); a[++l]=Node(x,y,k); L=x; } for(int i=h[x];i;i=e[i].nx) if(e[i].t!=y)Dfs2(e[i].t,x);}inline void Solve(int x,int y){ S=x; for(int i=h[x];i;i=e[i].nx) if(e[i].t!=y){ k=L=e[i].t; Dfs2(e[i].t,x); a[++l]=Node(x,L,k); }}int main(){ scanf("%d",&n); for(i=1;i<n;i++)scanf("%d%d",&x,&y),Add(x,y),Add(y,x); S=f[0]=n;Dfs(1,0); Dfs(Rt,0);x=0; for(i=1;i<=n;i++) if(i!=Rt&&s[i]*2==n)x=i; if(!x)Solve(Rt,0);else Solve(Rt,x),Solve(x,Rt); cout<<l<<endl; for(i=1;i<=l;i++)printf("%d %d %d\n",a[i].x,a[i].y,a[i].z); return 0;}
阅读全文
0 0
- codeforces843C Upgrading Tree -- 构造
- Upgrading ROMMON
- Upgrading Magento
- Binary Tree(构造)
- ## easyui tree 构造##
- hdu5573Binary Tree 思维构造
- 使用Hibernate构造出一棵Tree
- hdu 5379 Mahjong tree(构造)
- HDU 5573 Binary Tree【构造】
- HDU5573 Binary Tree(构造)
- HDU 5573 Binary Tree 构造
- hdu 5573 Binary Tree 构造
- HDU 5573-Binary Tree (构造)
- hdu5573 Binary Tree (构造)
- Upgrading to Indy 10
- Upgrading to Subversion 1.7
- 【Codeforces403B】【贪心】Upgrading Array
- easyUI tree 和构造tree 后台是一样的。
- 二进制整数装换为十六进制
- Unity中物体在固定路线移动
- transformClassesWithJarMergingForDebug错误原因以及解决方法
- java 面向对象基础
- HTML行元素和块元素
- codeforces843C Upgrading Tree -- 构造
- 读书笔记:机器学习实战【第4章:朴素贝叶斯】
- 构建嵌入式Linux应用系统 —— mp3播放器 madplay的移植
- Java实现Html转PDF
- 【Data_Structure笔记4】排序算法之【交换类排序】
- DirectFB学习之使用devmem驱动
- springboot搭建
- Linux信号(signal) 机制分析
- hdu 2082 找单词(母函数)