P4017 最大食物链计数(拓扑排序)
测试链接:https://www.luogu.com.cn/record/224653356
思路
利用出度是否为0,判断是否是食物链顶端,利用dp的思想,累加前面的路径
题解
拓扑排序 +stl队列
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
const int mod = 80112002;
typedef long long ll;
int t,n,m;
int dp[N];
int indg[N];
queue<int>que;
ll ans=0;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
vector<vector<int>>edges(n+10);
for(int i=0;i<m;i++)
{
int f,t;
cin>>t>>f;
edges[f].push_back(t);
indg[t]++;
}
for(int i=1;i<=n;i++)
{
if(indg[i]==0)
{
dp[i]++;
que.push(i);
}
}
// for(int i=1;i<=n;i++)
// {
// for(auto it:edges[i])cout<<it<<' ';
// }
while(!que.empty())
{
int cur = que.front();
que.pop();
if(edges[cur].size()==0)ans=(ans+dp[cur])%mod;
else
{
for(auto id:edges[cur])
{
dp[id]=(dp[id]+dp[cur])%mod;
if(--indg[id]==0)que.push(id);
}
}
}
cout<<ans<<endl;
return 0;
}
拓扑排序+链式前向星+stl队列
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
const int M=5e5+10;
const int mod = 80112002;
typedef long long ll;
int t,n,m;
int dp[N];
int indg[N];
queue<int>que;
int head[N];
int to[M];
int nt[M];
ll ans=0;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int f,t;
cin>>t>>f;
nt[i]=head[f];
to[i]=t;
head[f]=i;
indg[t]++;
}
for(int i=1;i<=n;i++)
{
if(indg[i]==0)
{
dp[i]++;
que.push(i);
}
}
// for(int i=1;i<=n;i++)
// {
// for(auto it:edges[i])cout<<it<<' ';
// }
while(!que.empty())
{
int cur = que.front();
que.pop();
if(head[cur]==0)ans=(ans+dp[cur])%mod;
else
{
for(int i=head[cur];i!=0;i=nt[i])
{
dp[to[i]]=(dp[to[i]]+dp[cur])%mod;
if(--indg[to[i]]==0)que.push(to[i]);
}
}
}
cout<<ans<<endl;
return 0;
}
P4017 最大食物链计数(拓扑排序)的更多相关文章
- 洛谷 P4017 最大食物链计数 (拓扑排序,思维)
题意:有\(n\)个点,连\(m\)条边,求最多有多少条食物链(从头走到为有多少条路径). 题解:之前抽了点时间把拓扑排序补完了,这题其实就是一道拓扑排序的裸题.关于拓扑排序: 1.首先,我们用\ ...
- 动态规划 洛谷P4017 最大食物链计数——图上动态规划 拓扑排序
洛谷P4017 最大食物链计数 这是洛谷一题普及/提高-的题目,也是我第一次做的一题 图上动态规划/拓扑排序 ,我认为这题是很好的学习拓扑排序的题目. 在这题中,我学到了几个名词,入度,出度,及没有环 ...
- 洛谷——P4017 最大食物链计数
P4017 最大食物链计数 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧 ...
- 洛谷 P4017 最大食物链计数
洛谷 P4017 最大食物链计数 洛谷传送门 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写 ...
- 洛谷 P4017 最大食物链计数 题解
P4017 最大食物链计数 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧 ...
- P4017 最大食物链计数 (拓扑排序)
看到拓扑排序感觉非常遥远的复杂,不喜欢图.看了拓扑排序的原理,很像广搜. 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 ...
- P4017 最大食物链计数(洛谷)
老师开始帮我们查漏补缺啦!我们的老师这两天给了我们一些我们没怎么学的函数和算法,比如STL的函数和拓扑排序之类的,这个题就是讲拓扑排序的. 先看题板: 题目背景 你知道食物链吗?Delia 生物考试的 ...
- BZOJ 4562: [Haoi2016]食物链(拓扑排序)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=4562 一句话题意:给一个DAG,求有多少条不完全相同的链,使链首入度为0,链尾出度为0. ...
- 洛谷P4017 最大食物链计数
拓扑排序板子题 #include <iostream> #include <cstdio> #include <cstring> #include <queu ...
- 【题解】 [HAOI2016]食物链 (拓扑排序)
懒得复制,直接贴链接吧 Solution: 水题一道,注意单独一个点的不算在食物链中,也就是\(in[i]==0\) \(out[i]==0\)的点就不计算 Code: //It is coded b ...
随机推荐
- Vim编辑器基本用法
热门的Linux操作系统中都会默认安装一款文本编辑器-----Vim.它有三种模式:命令模式,末行模式和编辑模式. 命令模式 控制光标的移动,可对文本进行删除,复制,粘贴. 输入模式 正常的文本录入 ...
- AtCoder Beginner Contest 370 补题记录
A - Raise Both Hands 题意: 给出Snuke举的左右手情况,如果只举左手,输出Yes,如果只举右手,输出No,否则输出Invalid 思路: 举左手:(l == 1 &&a ...
- 使用SimpleDateFormat获取指定时区时间
摘要:使用SimpleDateFormat把时间戳转换成指定格式的.指定时区的字符串. SimpleDateFormat是Java中的一个日期格式化类,继承了DateFormat,可以实现日期时间 ...
- Flask之初始
一.简介 Flask是一个基于Python实现的Web开发'微'框架 官方文档: http://flask.pocoo.org/docs/0.12/中文文档: http://docs.jinkan.o ...
- 解析依赖注入(DI)的本质
本文由 ChatMoney团队出品 在软件开发中,依赖注入是一种常用的设计模式,它允许我们将类的依赖关系通过构造器或其他方式自动注入.这种模式在控制器架构中尤为常见,它使得类的依赖关系更加灵活和可管理 ...
- 阿里微服务解决方案-Alibaba Cloud之父工程搭建(一)
一.创建父工程 1.1 选择 File -> Project 1.2 选择创建 Maven 项目 1.3 输入父工程名称和选择项目路径 如图所示,父工程就搭建好了 1.4 在父工程pom.xml ...
- DotTrace系列:5. 诊断程序的 慢File 和 慢SQL
一:背景 1. 讲故事 上一篇跟大家聊到了 UI Freeze 的问题,让大家感受到了时间轴的强大和美观,这个是 perfview 所不具备的,本篇跟大家聊一下用 dottrace 诊断Windows ...
- windows10搭建gitlab服务器
gitlab服务器没有win运行环境,所以需要先搭建个虚拟机:windows10+VMware(Centos7) +gitlab+局域网其他电脑访问 一:VMware 安装,网上找找有安装教程 二:虚 ...
- AI应用实战课学习总结(6)分类算法分析实战
大家好,我是Edison. 最近入坑黄佳老师的<AI应用实战课>,记录下我的学习之旅,也算是总结回顾. 今天是我们的第6站,一起了解下分类算法基本概念 以及 通过分类算法辅助疾病诊断的案例 ...
- C# 关于 &符号,字符串转字典Dictionary<string, string>
private static Dictionary<string, string> ParseToDictionary(string str) { Dictionary<string ...