洛谷 2279 [HNOI2003] 消防局的设立 贪心+dfs
来源:互联网 发布:淘宝卖家二维码生成 编辑:程序博客网 时间:2024/05/20 10:11
题目:
https://www.luogu.org/problemnew/show/2279
贪心即可;
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN=1000001;int fst[MAXN],nxt[MAXN],fa[MAXN],deep[MAXN];struct hh {int from,to;}ma[MAXN];int n,tot,ans;bool vis[MAXN];void build(int f,int t){ ma[++tot]=(hh){f,t}; nxt[tot]=fst[f]; fst[f]=tot; return;}void dfs(int x,int f){ fa[x]=f,deep[x]=deep[f]+1; for(int i=fst[x];i;i=nxt[i]) { int v=ma[i].to; if(v==f) continue; dfs(v,x); } return;}void cut(int x,int depth){ vis[x]=1; for(int i=fst[x];i;i=nxt[i]) { int v=ma[i].to; if(depth+1<=2) cut(v,depth+1); } return;}void calc(){ while(1) { int i=1,Max=0,v=0; for(i=1;i<=n;i++) { if(!vis[i] && deep[i]>Max) Max=deep[i],v=i; } vis[v]=1; if(!v) break; cut(fa[fa[v]],0),ans++; } return;}void solve(){ scanf("%d",&n); for(int i=2;i<=n;i++) { int x; scanf("%d",&x); build(x,i),build(i,x); } dfs(1,1),calc(); cout<<ans<<endl;}int main(){ solve(); return 0;}
阅读全文
1 0
- 洛谷 2279 [HNOI2003] 消防局的设立 贪心+dfs
- BZOJ 1217: [HNOI2003]消防局的设立 贪心+dfs
- 洛谷P2279 [HNOI2003]消防局的设立(深搜,贪心)
- 【bzoj 1217】[HNOI2003]消防局的设立 贪心
- BZOJ 1217: [HNOI2003]消防局的设立 贪心
- 【bzoj1217】[HNOI2003]消防局的设立 贪心
- bzoj1217: [HNOI2003]消防局的设立(贪心)
- [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- bzoj1217: [HNOI2003]消防局的设立
- P2279 [HNOI2003]消防局的设立
- bzoj1217: [HNOI2003]消防局的设立
- bzoj1217: [HNOI2003]消防局的设立
- 1217: [HNOI2003]消防局的设立
- Android 端蓝牙模块的开发
- 入职如何谈薪资
- 【R 语言 数据抽样】将样本总体分为样本集和测试集
- linux find查找命令的两个高级用法
- 使用Java发送邮件
- 洛谷 2279 [HNOI2003] 消防局的设立 贪心+dfs
- 基本阈值的操作
- 关于加班与面试
- 复习试题:运算符以及类型的强制转换
- iOS8 苹果自带的毛玻璃效果
- 事务与两阶段提交
- C语言基础练习12
- 清理ambari安装的hadoop集群
- Android组件学习笔记(SharedPreferences实现保存)