首页 > 其他分享 >Codeforces Beta Round #87 (Div. 1 Only) A. Party(树的深度+dfs)

Codeforces Beta Round #87 (Div. 1 Only) A. Party(树的深度+dfs)

时间:2022-10-05 21:33:10浏览次数:79  
标签:LL Codeforces dfs Only maxn 深度 节点 老板

https://codeforces.com/contest/115/problem/A

题目大意:

给定n个节点,每个节点都有一个不同于自己的数值,表示自己的老板,-1表示自己就是老板。

现在玩游戏需要组队,一组队伍中,人数任意,但是任意两个都不能是直系的老板或者老老板。。。老老老板等形成上下级关系。

问我们可以组成队伍的最小数量是多少?
input 
5
-1
1
2
1
-1
output 
3
  • 我其实一开始猜到了这题考的就是树的深度,但是由于根节点的复杂性,我依靠自己的力量还是没有想出合理的方案来
  • 看了下别人写的,顿悟
  • 为什么不再造一个更大的节点呢?作为全部已知根节点的总司令
  • 这样我们从总司令开始往下爆搜,既不会改变根节点,也可以不改变深度直接一遍跑完
  • 妙哉~
//我们要想没有上级和下属呆在一起,那我们可以直接把同级的人塞在一起就行了呀
//所以就可以直接转化成寻找树的最大深度
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=200200,M=2002;
LL n,a[N],maxn=0;
vector<LL> g[N];
void dfs(LL u,LL depth)
{
    maxn=max(maxn,depth);
    for(LL i=0;i<g[u].size();i++)
    {
        dfs(g[u][i],depth+1);
    }
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        cin>>n;
        for(LL i=1;i<=n;i++)
        {
            cin>>a[i];
            //一个很巧妙的点就在于我们把0作为根节点,所以与那本意义上的根节点也就成了第一层子节点而已
            //就无需在每个节点上都跑一遍(米奇妙妙屋)
            if(a[i]==-1) g[0].push_back(i);
            else g[a[i]].push_back(i);
        }
        dfs(0,0);//从0这个的节点开始跑,深度初始化为1
        cout<<maxn<<endl;
    }
    return 0;
}

标签:LL,Codeforces,dfs,Only,maxn,深度,节点,老板
From: https://www.cnblogs.com/Vivian-0918/p/16756463.html

相关文章

  • HDFS读写流程
    HDFS读流程客户端通过FileSystem的get方法加载配置获得FileSystem对象。FileSystem向NameNode通过open方法请求读取文件。NameNode进行检查(文件是否存在,是否有相应权......
  • Codeforces Round #824 (Div. 2) C - Phase Shift
    (有点难以描述的)题意:给出一串字母,为每一个字母找一个映射,要求:1)所有的映射连起来形成一个且只有一个环;2)这个环内包含26个字母;3)映射后形成的新字符串字典序最小。解:随便找两......
  • Codeforces Round #321 (Div. 2) C. Kefa and Park(树+dfs)
    https://codeforces.com/contest/580/problem/C题目大意:给定一棵树,这棵树总共有n个节点,自己家住在节点1(根节点);每个节点都有一个标记a[i],标记为1就是这个地方有猫,0就表......
  • *洛谷 P1018 [NOIP2000 提高组] 乘积最大(dfs+高精度)
    说在前头此篇题解是记录自己的暴力写法,并不能100分满分通过洛谷测试数据(只有60)纯纯记录写法而写https://www.luogu.com.cn/problem/P1018我还说这么简单呢这题,想太......
  • Codeforces 1660 D
    我是蒟蒻!我是蒟蒻!我是蒟蒻!重要的事情说三遍!传送门传送门点这儿!$\color{white}{哈哈哈!你被骗了!}$$\color{white}{真传送门在上面的感叹号!}$思路嗯?一片空白?最......
  • 如何将ONLYOFFICE 桌面编辑器 v7.2 连接到 Seafile 服务器
    ​​ONLYOFFICE桌面编辑器​​是免费开源的办公套件,包括文本文档、电子表格、演示文稿和表单编辑器。您可以离线编辑文件,而且,您也可以将应用程序连接到云端(ONLYOFFICE、Next......
  • ABC 249 C - Just K(dfs)
    https://atcoder.jp/contests/abc249/tasks/abc249_c题目大意:给定n个字符串,让我们随意选择,然后找到这里面相同的字母刚好等于k个的时候的数量是多少?求可选择出来的最......
  • HDFS shell命令行常用操作
    1.hadoopfs-mkdir[-p]<path>path为待创建的目录,如果没有一个父目录就加一个-p例:hadoopfs-mkdir/yuan创建一个shenzi的目录2.hadoopfs-ls[-h][-R][path]p......
  • Codeforces Round #804 (Div. 2) C(组合 + mex)
    CodeforcesRound#804(Div.2)C(组合+mex)本萌新的第一篇题解qwq题目链接:传送门QAQ题意:给定一个\(\left[0,n-1\right]\)的排列,问有多少个排列,所有的子区间的......
  • Codeforces Round #824 (Div. 2)
    题目链接A~D懒得写。不是因为题不好,其实我觉得做起来非常舒适。但就是懒得写了(E-HousePlanning\(d_1,d_2\)全打乱感觉很难。先看看不打乱怎么做。对于每个\(i......