P2325 [SCOI2005]王室联邦
SPJ
构造一下,用栈记录即可
#include<bits/stdc++.h> using namespace std; int sth,head[10000],n,a,b,c,m,ne,sta[10000],cnt,ct[10000],tag[10000]; struct node{int nxt,to;}eg[10000]; void adde(int u,int v) { eg[++ne].nxt=head[u]; eg[ne].to=v; head[u]=ne; } void dfs(int u,int fa) { int now=sth; for(int i=head[u];i;i=eg[i].nxt) if(eg[i].to!=fa) { dfs(eg[i].to,u); if(sth-now>=m) { ct[++cnt]=u; while(sth>now) tag[sta[sth--]]=cnt; } } sta[++sth]=u; } int main() { cin>>n>>m; for(int i=1;i<n;i++) {cin>>a>>b;adde(a,b);adde(b,a);} dfs(1,0); if(!cnt)ct[++cnt]=1; while(sth) tag[sta[sth--]]=cnt; cout<<cnt<<endl; for(int i=1;i<=n;i++)cout<<tag[i]<<" ";cout<<endl; for(int i=1;i<=cnt;i++)cout<<ct[i]<<" "; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步