[POJ3107]Godfather(树形dp)
2016-04-25 21:54
483 查看
题目描述
传送门题意:同POJ1655,可能有多种方案,按从小到大输出。
题解
代码
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespace std; const int max_n=5e4+5; const int max_e=max_n*2; const int INF=2e9; int T,n,ans=INF,x,y,num; int tot,point[max_n],next[max_e],v[max_e],size[max_n],ansp[max_n]; inline void add(int x,int y){++tot;next[tot]=point[x];point[x]=tot;v[tot]=y;} inline void dfs(int x,int fa){ size[x]=1; int ansnow=0,ansnowp=0; for (int i=point[x];i;i=next[i]) if (v[i]!=fa){ dfs(v[i],x); size[x]+=size[v[i]]; if (size[v[i]]>ansnow){ ansnow=size[v[i]]; ansnowp=x; } } if (n-size[x]>ansnow) ansnow=n-size[x],ansnowp=x; if (ansnow<ans) ans=ansnow,ansp[num=1]=ansnowp; else if (ansnow==ans) ansp[++num]=ansnowp; } int main(){ scanf("%d",&n); for (int i=1;i<n;++i) scanf("%d%d",&x,&y),add(x,y),add(y,x); dfs(1,0); sort(ansp+1,ansp+num+1); for (int i=1;i<=num;++i) printf("%d%c",ansp[i]," \n"[i==num]); }
相关文章推荐
- 为什么catagory可以增加成员方法,不可以增加成员变量
- Golang tls 链接通信
- libgdx 裁剪多边形(clip polygon、masking polygon)
- golang的的模板引擎之pongo2
- 【GOF】单例模式singleTon的再认识
- Windows+GO+beego
- django fields lookup methods
- django站点管理1
- django 模板if判断的时候==两边需要有空格
- ContentNegotiatingViewResolver解析器
- URAL 1851|GOV-internship|最小割
- django migrate error: table 'xxx' already exists
- mongoose使用简记
- Django ValidationError中的单下划线
- category的介绍与简单实用
- Git Step By Step - Step 2: Go Back in Time
- golang中的类和接口的使用
- Golang Basic - select and channel usage
- OnePointThreeAcres Google/April -1
- Goldengate实验:源端目标端字符集不同