题目描述

如图所示为某生态系统的食物网示意图,据图回答第一小题。

1. 数一数,在这个食物网中最长的食物链包含的物种数是 ( )

......

现在给你 n 个物种和 m 条能量流动关系,求其中的食物链条数。

物种的名称为从 1 到 n 编号,m 条能量流动关系形如

a1 b1

a2 b2

a3 b3

……

am−1 bm−1

am bm

其中 ai bi 表示能量从物种 ai 流向物种 bi,即 ai 和 bi 之间存在捕食关系,且 ai 是被捕食者, bi 是捕食者。一条食物链是从顶到底的,即从能量流向的起点到终点。如图中的草->兔->狐就是一条食物链,而草->兔则不是。

一条食物链至少包含两种生物。

输入描述

多组输入,每组第一行两个正整数 n 和 m。0 < n, m <= 1000

接下来 m 行每行两个整数 ai bi 表示 m 个捕食关系。

(数据保证输入数据符号合生物学特点,且不会有重复的能量流动关系出现)

输出描述

一个整数即食物网中的最长的食物链包含的生物数。

样例输入

Copy to Clipboard
10 16
1 2
1 4
1 10
2 3
2 5
4 3
4 5
4 8
6 8
7 6
7 9
8 5
9 8
10 6
10 7
10 9

样例输出

Copy to Clipboard
6

样例解释

输入的图就是上面题目描述的那个图。

各个物种的编号依次为:

草 <->1 兔 <->2 狐 <->3 鼠 <->4 猫头鹰 <->5 吃虫的鸟 <->6 蜘蛛 <->7 蛇 <->8 青蛙 <->9 食草昆虫 <->10。

最长的食物链为:1->10->7->6->8->5。

思路:把食物链当作森林,创一个根结点,连结入度为零的几个节点形成一棵树,直接DFS一次即可。最后输出长度减一(新建的那个要减掉)

#include<iostream>
#include<vector>
#include<cstring>
using namespace std; const int maxn=100000;
int a[maxn];
int m,n,x,y;
vector<int>t[1000];
int md=1;
int in[maxn],out[maxn]; void dfs( int x, int depth)
{
if(depth>md)
{
md=depth;
}
for(int i=0;i<t[x].size();i++)
{
dfs(t[x][i],depth+1);
}
} int main()
{
while(cin>>n>>m){ for(int i=0;i<m;i++)
{
cin>>x>>y;
t[x].push_back(y);
out[x]=1;
in[y]=1;
}
for(int i=1;i<=n;i++)
{
if(in[i]==0)
t[0].push_back(i);
}
dfs(0,1);
cout<<md-1<<endl; md=1;
memset(in, 0, sizeof(in));
memset(out, 0, sizeof(out));
for(int i = 0;i<1000;i++)
t[i].clear();
}
return 0;
}

C++求最长的一条食物链的长度。DFS深度优先算法的更多相关文章

  1. 求最长连续公共子序列 POJ 3080

    Description The Genographic Project is a research partnership between IBM and The National Geographi ...

  2. hdu 1595 find the longest of the shortest【最短路枚举删边求删除每条边后的最短路,并从这些最短路中找出最长的那条】

    find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  3. HDU 1025 Constructing Roads In JGShining's Kingdom(求最长上升子序列nlogn算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025 解题报告:先把输入按照r从小到大的顺序排个序,然后就转化成了求p的最长上升子序列问题了,当然按p ...

  4. HDU 4612 Warm up tarjan缩环+求最长链

    Warm up Problem Description   N planets are connected by M bidirectional channels that allow instant ...

  5. 训练赛 Grouping(强连通分量缩点 + DAG求最长路)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=158#problem/F 大致题意:给出n个人和m种关系(ti,si),表示ti ...

  6. 【HDOJ1217】【Floyd求最长路】

    http://acm.hdu.edu.cn/showproblem.php?pid=1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others)    M ...

  7. 计蒜之道 初赛 第三场 题解 Manacher o(n)求最长公共回文串 线段树

    腾讯手机地图 腾讯手机地图的定位功能用到了用户手机的多种信号,这当中有的信号的作用范围近.有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在不论什么一个方向上信号强度都 ...

  8. 求最长回文子串,O(n)复杂度

    最长回文子串问题-Manacher算法 最长回文串问题是一个经典的算法题. 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 假设一个字符串正着读和反着读是一样的,那它就是回 ...

  9. HDU 1243 反恐训练营 (动态规划求最长公共子序列)

    反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  10. UVA 10029 Edit Step Ladders ——(DAG求最长路)

    题意:升序的给出一本若干个单词,每个单词都可删除一个字母,添加一个字母或者改变一个字母,如果任意一个操作以后能变成另外一个字典中的单词,那么就连一条有向边,求最长的长度. 分析:DAG的最长路和最短路 ...

随机推荐

  1. STM8S003驱动TM1650偶发性故障

    故障现象:STM8S003驱动TM1650数码管显示,偶发TM1650无法初始化造成数码管点不亮. 已经在程序中对TM1650初始化之前加上了延时,但是问题并未改善. 之前发生过类似情况,STM8S0 ...

  2. Cline技术分析:prompt如何驱动大模型对本地文件实现自主变更

    prompt如何驱动大模型对本地文件实现自主变更 在AI技术快速发展的今天,编程方式正在经历一场革命性的变革.从传统的"人写代码"到"AI辅助编程",再到&qu ...

  3. DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升

    随着搭载HarmonyOS 5的Pura X发布,鸿蒙生态进入快车道,各应用正在加速适配开发,越来越多开发者加入到鸿蒙应用开发浪潮中.为提升鸿蒙应用开发效率,华为前不久上线了首款开发HarmonyOS ...

  4. Allure2+Maven+Testng部署及使用详细教程

    AllureReport部署 前言:最近做自动化测试要用到AllureReport生成测试报告,网上逛了一下,发现有很多帖子,但是大家描述的都模棱两可,没有详细的步骤,因此编写此贴对部署方式进行记录; ...

  5. HarmonyOS数据防泄漏服务(DLP)开发实战

    系统级数据防护的核心能力解析 在企业级文档管理.教育课件分发.金融合同处理等场景中,数据泄露风险贯穿文件生命周期.HarmonyOS提供的数据防泄漏服务(DLP),通过沙箱隔离.端云协同认证.细粒度权 ...

  6. 应用内存管理:Linux的应用与内存管理

    应用程序想要使用内存,必须得找操作系统申请,那就有必要先了解下Linux内核怎么管理内存的,然后再去分析应用程序的内存管理细节. 硬件架构 现代计算机体系结构被称为Non-Uniform Memory ...

  7. WPF placeHolder效果的样式设定

    <UserControl x:Class="wpfTestStudio.textPlaceHolderDemo" xmlns="http://schemas.mic ...

  8. 探秘Transformer系列之(34)--- 量化基础

    探秘Transformer系列之(34)--- 量化基础 目录 探秘Transformer系列之(34)--- 量化基础 0x00 概述 0x01 背景知识 1.1 需求 1.2 压缩 1.3 如何表 ...

  9. React-Native开发鸿蒙NEXT-从global变量聊聊代码的内部优化

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  10. java springboot图片上传和访问

    上传 @RequestMapping("/uploadImg") public Result uploadImg(HttpServletRequest request, Multi ...