Codeforces Round #359 (Div. 1) B. Kay and Snowflake dfs
2017-09-02 12:52
357 查看
参考http://www.cnblogs.com/qscqesze/p/5615969.html
**题意:
给你一棵树,n点n-1边,m个询问,每次询问你x点及其子树中选择一个点删除,最后这个子树的形成的树枝中节点树不超过siz[x]/2,输出这个点
**
**题意:
给你一棵树,n点n-1边,m个询问,每次询问你x点及其子树中选择一个点删除,最后这个子树的形成的树枝中节点树不超过siz[x]/2,输出这个点
**
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include<bits/stdc++.h> using namespace std; #define sf scanf #define pf printf #define mem(a,b) memset(a,b,sizeof(a)); #define rep(i,a,b) for(int i=(a);i<=(b);++i) #define MP make_pair #define ULL unsigned long long #define LL long long #define inf 0x3f3f3f3f #define md ((ll+rr)>>1) #define ls (i<<1) #define rs (ls|1) #define eps 1e-5 #define ree freopen("in.txt","r",stdin); #define bug pf("----------------"); #define N 300010 //2017年09月02日12:40:54 int ans ; vector<int>G ; int fa ; int sz ; void dfs(int x){ int len=G[x].size(); sz[x]=1; ans[x]=x; for(int i=0;i<len;++i){ int v=G[x][i]; dfs(v); sz[x]+=sz[v]; } for(int i=0;i<len;++i){ int v=G[x][i]; if(sz[v]*2>sz[x]){ ans[x]=ans[v]; } } while((sz[x]-sz[ans[x]])*2>sz[x])ans[x]=fa[ans[x]]; } int main(){ int n;sf("%d",&n); int q;sf("%d",&q); rep(i,2,n){ sf("%d",&fa[i]); G[fa[i]].push_back(i); } dfs(1); while(q--){ int x;sf("%d",&x); pf("%d\n",ans[x]); } }
相关文章推荐
- Codeforces Round #359 (Div. 1) B. Kay and Snowflake dfs
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake 树DP
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake 树的重心
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake
- Codeforces Round #359 (Div. 2)D. Kay and Snowflake
- Codeforces Round #359 (Div. 2)D. Kay and Snowflake
- codeforces 686D D. Kay and Snowflake(dfs)
- Codeforces Round #359 (Div. 2)D. Kay and Snowflake【树的重心】
- Codeforces Round #359 (Div. 2)D. Kay and Snowflake【树的重心】
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake
- 【codeforces685B686D】【Kay and Snowflake】【线段树合并】
- D. Kay and Snowflake 树的重心
- Codeforces-686D-Kay and Snowflake
- Codeforces 686 D Kay and Snowflake (树重心)
- 【24.63%】【codefroces 686D】Kay and Snowflake
- Codeforces 686 D Kay and Snowflake【树的重心】
- Kay and Snowflake CodeForces - 686D(树形dp,树的重心)
- Codeforces Round #430 (Div. 2) C. Ilya And The Tree dfs+set