poj 3107 删点最大分支最小
http://poj.org/problem?id=3107
这实际上就是找重心,在之前有做过:http://www.cnblogs.com/qlky/p/5780933.html
- #include <iostream>
- #include <string>
- #include <cstring>
- #include <cstdlib>
- #include <cstdio>
- #include <cmath>
- #include <algorithm>
- #include <stack>
- #include <queue>
- #include <cctype>
- #include <vector>
- #include <iterator>
- #include <set>
- #include <map>
- #include <sstream>
- using namespace std;
- #define mem(a,b) memset(a,b,sizeof(a))
- #define pf printf
- #define sf scanf
- #define spf sprintf
- #define pb push_back
- #define debug printf("!\n")
- #define MAXN 110000+5
- #define MAX(a,b) a>b?a:b
- #define blank pf("\n")
- #define LL long long
- #define ALL(x) x.begin(),x.end()
- #define INS(x) inserter(x,x.begin())
- #define pqueue priority_queue
- #define INF 0x3f3f3f3f
- int n,m;
- struct node{int y,val,next;}tree[MAXN<<];
- int head[MAXN],vis[MAXN],ptr=,dp[MAXN],num[MAXN],ans,tot,a[MAXN];
- void init()
- {
- mem(head,-);
- mem(vis,);
- mem(dp,);
- ans =INF;
- tot = ;
- ptr=;
- }
- void add(int x,int y)
- {
- tree[ptr].y = y;
- tree[ptr].next = head[x];
- head[x] = ptr++;
- }
- void dfs(int rt)
- {
- num[rt]=vis[rt]=;
- int tmp = ;
- //pf("rt%d\n",rt);
- for(int i = head[rt];i!=-;i=tree[i].next)
- {
- int y = tree[i].y;
- if(vis[y]) continue;
- dfs(y);
- num[rt]+=num[y];
- tmp = max(tmp,num[y]);
- //pf("y%d %d\n",y,tmp);
- }
- tmp = max(tmp,n-num[rt]);
- //pf("t%d %d %d\n",rt,tmp,ans);
- if(tmp<ans)
- {
- ans = tmp;
- tot = ;
- a[tot++] = rt;
- }
- else if(tmp == ans) a[tot++] = rt;
- }
- int main()
- {
- int i,j,k,t;
- while(~sf("%d",&n))
- {
- init();
- for(i=;i<n;i++)
- {
- int x,y;
- sf("%d%d",&x,&y);
- add(x,y);
- add(y,x);
- }
- dfs();
- sort(a,a+tot);
- pf("%d",a[]);
- for(i=;i<tot;i++) pf(" %d",a[i]);
- blank;
- }
- }
poj 3107 删点最大分支最小的更多相关文章
- poj 2378 删点最大分支不超过一半
http://poj.org/problem?id=2378 这题和找重心基本一样,判断条件换一下就行 #include <iostream> #include <string> ...
- # [Poj 3107] Godfather 链式前向星+树的重心
[Poj 3107] Godfather 链式前向星+树的重心 题意 http://poj.org/problem?id=3107 给定一棵树,找到所有重心,升序输出,n<=50000. 链式前 ...
- POJ 1655 Balancing Act&&POJ 3107 Godfather(树的重心)
树的重心的定义是: 一个点的所有子树中节点数最大的子树节点数最小. 这句话可能说起来比较绕,但是其实想想他的字面意思也就是找到最平衡的那个点. POJ 1655 题目大意: 直接给你一棵树,让你求树的 ...
- POJ.1655 Balancing Act POJ.3107 Godfather(树的重心)
关于树的重心:百度百科 有关博客:http://blog.csdn.net/acdreamers/article/details/16905653 1.Balancing Act To POJ.165 ...
- POJ 1655 Balancing Act && POJ 3107 Godfather
题目大意: 根据题目的图很好理解意思,就是记录每一个点的balance,例如 i 的balance就是把 i 从这棵树中除去后得到的森林中含有结点数最多 的子树中的节点个数,然后找到所有节点中对应的b ...
- poj 2195 二分图带权匹配+最小费用最大流
题意:有一个矩阵,某些格有人,某些格有房子,每个人可以上下左右移动,问给每个人进一个房子,所有人需要走的距离之和最小是多少. 貌似以前见过很多这样类似的题,都不会,现在知道是用KM算法做了 KM算法目 ...
- git:当本地分支中的代码和develop分支上有很多冲突,希望删掉本地分支,重新建立新的分支,怎么解决?
git:当本地分支中的代码和develop分支上有很多冲突,希望删掉本地分支,重新建立新的分支,但是git中说你需要先解决当前的冲突,这种情况怎么解决 这种情况可以在代码编辑器中点击commit,然后 ...
- poj 3107 Godfather 求树的重心【树形dp】
poj 3107 Godfather 和poj 1655差不多,那道会了这个也就差不多了. 题意:从小到大输出树的重心. 题会卡stl,要用邻接表存树..... #include<iostrea ...
- poj 2914(stoer_wanger算法求全局最小割)
题目链接:http://poj.org/problem?id=2914 思路:算法基于这样一个定理:对于任意s, t V ∈ ,全局最小割或者等于原图的s-t 最小割,或者等于将原图进行 Cont ...
随机推荐
- 【Java】Observer Pattern
前言 代码来源于生活,更加高于生活.设计模式让我们的生活更加的方便.观测一个东西,盯着一个东西,关注一个公众号,这些东西,如果没有即时通知的话,我们又特别想了解这方面的内容,那么我们除了一直耗着时间找 ...
- Oracle中merge into语法
merge into 语句就是insert和update的一个封装,简单来说就是: 有则更新,无则插入 下面说怎么使用 MERGE INTO table_Name T1(匿名) using (另外一 ...
- Servlet中Web.xml的配置详解(一)
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...
- springboot整合dubbo注解方式(三)
笔者用自己代码测试时候发现这个版本信息,可以没有,也可以制定一个就可以了,没有太大的问题,只是需要注意引入的依赖问题,两个jar与一个jar的问题, 然后就是接口公共依赖问题,案例是把我找的几个案例进 ...
- Qt 学习之路 2(2):Qt 简介
Home / Qt 学习之路 2 / Qt 学习之路 2(2):Qt 简介 Qt 学习之路 2(2):Qt 简介 豆子 2012年8月21日 Qt 学习之路 2 43条评论 Qt 是一个著名的 ...
- Qt 学习之路 2(1):序
https://www.devbean.net/category/qt-study-road-2/page/10 原来开过QT学习之路1, 很棒, 再翻阅时已经没有了. 所以这次把看过的记录下来 Ho ...
- nginx 搭建 rtmp 服务器
前言 最近接手了一个跟视频监控相关的项目,用了近年来越来越流行的 Web 服务器 nginx 加上 nginx-rtmp-module 搭建 rtmp 服务器.使用了阿里云的服务器,系统 Ubuntu ...
- CSS(十二).transition的应用之CSS中心扩散
实现 css中心向两边扩散的两个核心 1.hover 之前的 垂直居中 2.文字置于最顶层 顺道来讲讲hover 伪元素是不支持 hover 的,不过我们可以给普通的 tag 标签添加 hover 以 ...
- redis修改密码和更改端口
Liunx下redis修改密码和更改端口 redis一个实例就是一个节点,每个节点分配一个端口号,每个节点对应一个redis.conf配置文件. redis默认配置的端口号是6379,假设现在要多配置 ...
- 转——.ashx文件与.ashx.cs
作者:PBDragon 原文连接:http://www.cnblogs.com/PBDragon/p/3811831.html 如果项目是“新建网站”,添加的ashx是没有ashx.cs的:如果是新建 ...