【POJ】2378 - Tree Cutting 树形dp
2017-09-03 09:23
495 查看
http://poj.org/problem?id=2378
给定一棵树,求分支size均不大于一半点数的点
递归的同时计算各个分支size,如果出现大于一半点数的则给这个点打上标记
最后输出没有标记的点即可。
给定一棵树,求分支size均不大于一半点数的点
递归的同时计算各个分支size,如果出现大于一半点数的则给这个点打上标记
最后输出没有标记的点即可。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <queue> #include <vector> #include <numeric> #include <algorithm> using namespace std; int n; vector <int> v[10005]; int size[10005],mark[10005]; void dfs(int x,int fx){ size[x]=1; mark[x]=1; for (int i=0;i<v[x].size();i++){ int y=v[x][i]; if (y!=fx){ dfs(y,x); if (size[y]*2>n) mark[x]=0; size[x]+=size[y]; } } if ((n-size[x])*2>n) mark[x]=0; } int main(){ while (cin >> n){ for (int i=1;i<n;i++){ int x,y; cin >> x >> y; v[x].push_back(y); v[y].push_back(x); } dfs(1,0); bool flag=1; for (int i=1;i<=n;i++){ if (mark[i]){ cout << i << endl; flag=0; } } if (flag) cout << "NONE" << endl; } }
相关文章推荐
- poj 2378 Tree Cutting (树形dp)
- POJ 2378 Tree Cutting【树形DP】
- poj 2378 Tree Cutting(树形dp)
- POJ 2378 Tree Cutting——树形dp
- poj 2378 Tree Cutting 树形dp (删点)
- Poj 2378 Tree Cutting (树形DP)
- poj 2378 Tree Cutting(树形DP,删点使得独立的部分结点数不超过n/2)
- Poj 2378 Tree Cutting(树形dp)
- POJ 2378-Tree Cutting(树形dp)
- Tree Cutting - POJ 2378 树形dp
- POJ 2378 Tree Cutting(树形DP)
- POJ - 2378 Tree Cutting(树形dp)
- poj 2378 Tree Cutting 树形DP
- poj 2378 Tree Cutting 树形dp
- POJ--2378--Tree Cutting--树形DP
- 树形DP____AllenLSY( POJ 2378 )
- poj 2378(树形dp)
- POJ 2378 Tree Cutting (简单树形DP、删点)
- poj 2378 Tree Cutting 树状dp
- POJ 2378 树形dp