首页 > 其他分享 >P3183 [HAOI2016]食物链(记忆化搜索 DAG)

P3183 [HAOI2016]食物链(记忆化搜索 DAG)

时间:2022-12-28 13:36:01浏览次数:76  
标签:食物链 DAG P3183 int res HAOI2016 搜索 顶点

P3183 [HAOI2016]食物链

题意

给出一张 n 个点 m 条边的有向无环的食物网,问这其中有多少条极长的食物链。

“注意单独的一种孤立生物不算一条食物链。”

思路

​ 这题可以用拓扑排序,也可以用记忆化搜索写。我们从每条食物链的顶点开始向下搜索,遇到一个叶子结点就可以形成一条食物链。数组 \(f_i\) 记录的是 从 i 为顶点的食物链条数,那我们就记忆化搜索一下,累加到顶点,最后把所有顶点的值加起来就可以了。

实现

#include <bits/stdc++.h>

using namespace std;
const int N = 100005;

int n, m;
int has_father[N]; //也可以用出入度来判断是否为食物链的顶点或者叶子结点。
int f[N];
vector<int> g[N];

int dfs(int u)
{
    if(f[u])    return f[u];
    int res = 0;
    bool is_leaf = true;
    for(int v : g[u])
    {
        is_leaf = false;
        res += dfs(v);
    }   
    if(is_leaf)
        return (has_father[u] == 1);
    f[u] = res;
    return res;
}

int main()
{
    cin >> n >> m;
    if(m == 0)
    {
        cout << 0 << '\n';
        return 0;
    }
    while(m --)
    {
        int x, y;
        cin >> x >> y;
        g[x].push_back(y);
        has_father[y] = 1;
    }

    int res = 0;
    for(int i = 1; i <= n; i ++)
        if(!has_father[i]) //无父节点,是某条食物链的起点。
            res += dfs(i);
    cout << res << '\n';
}

标签:食物链,DAG,P3183,int,res,HAOI2016,搜索,顶点
From: https://www.cnblogs.com/DM11/p/17009933.html

相关文章

  • P1434 [SHOI2002] 滑雪(记忆化搜索 DAG)
    P1434[SHOI2002]滑雪题意给你一个\(n\timesm\)的矩阵\(A\),\(A_{i,j}\)代表\((i,j)\)这个地方的高度,你可以从任意一个地方出发,然后走到一个和这个地方四联通......
  • DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块
    熟悉Taier的小伙伴们应该都知道,在11月7日发布的​​Taier1.3新版本​​中,我们融合了「DataSourceX模块」。这是十分重要的一个变化,移除Taier外部插件依赖,新增数据源插件相......
  • T1408 矩阵嵌套(DAG 记忆化搜索)
    T1408矩阵嵌套​ 有n个矩阵,每个矩阵有长x和宽y。我们定义矩阵A可以嵌套在矩阵B中:A.x>B.x且A.y>B.y或者A.x>B.y且A.y>B.x。我们现在要找一个最长......
  • [dp 记录]agc016F Game on DAG
    博弈论好题,做完感觉加深了对SG函数的理解!题意:给定一张DAG,问该DAG的\(2^m\)张导出子图中有多少张满足\(SG[1]=SG[2]\)注:此为转换后题意\(n\leq15\)考虑推......
  • Apache Airflow < 2.4.0 example dag 远程代码执行漏洞(CVE-2022-40127)【WAF防护运营】
    ApacheAirflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),Airflow可以定义一组有依赖的任务,按照依赖依次执行。CVE-2022-40127中,若攻击者可访问到ApacheA......
  • Dagger2利器系列一:入门到使用
    商业转载请联系作者获得授权,非商业转载请注明出处。目录​​一 Dagger2​​​​1.1简介:​​​​1.2起源​​​​二Dagger2注解初识​​​​2.1@Inject:​​​​2.2@Mod......
  • 洛谷 P3183 [HAOI2016]食物链(dfs+记忆化搜索)
    https://www.luogu.com.cn/problem/P3183题目大意:给定n个节点,标号分别为1——n,然后给出m条有向边,问我们不同的食物链路径有多少?输入#1101612141102325......
  • Luogu P3182 [HAOI2016]放棋子
    题目链接:​​传送门​​题目说了每行有一个障碍两个障碍不在同一行也不在同一列那障碍放哪里就没关系了矩阵都不用输入或者这样理解:交换矩阵的某两行对答案是没有影响......
  • dagger2(dagger2)
    PowerVR、Adreno、Mali、Tegra2分别代表那几个处理器MALI-400,单核三角形输出率30M/秒像素填充率275M/秒I9100集成4个Mali-400MP显示核心,性能远超Adreno205高通双核GPU......
  • Abp FullAuditedAggregateRoot
    https://www.cnblogs.com/jackyfei/p/16193430.html这一次,我继承自FullAuditedAggregateRoot,相比Categoryd的AuditedAggregateRoot类,它还增加了IsDeleted、DeletionTime......