当前位置: 首页 > news >正文

算法总结:图论——拓扑序

线段树实在写不下去了,来写一下拓扑序吧。

模版参见某谷B3644
大意:给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。

思路

这玩意儿有点简单:
这个家族的关系很显然可以用有向图来表示。
假设边的方向是由祖先指向后辈,那么后辈一定会有入度。

在图论中,顶点的度(d e g r e e degreedegree)是指与该顶点相连的边的数量,指向该顶点的边数即为入度。

所以,每次只需要找到入度为0的点,将其加入答案中,并将其后辈的入度-1,如此循环即可。
数据结构上,可以用队列存入度为0的点。

代码

#include<bits/stdc++.h>usingnamespacestd;#defineN103intn,into[N];queue<int>q;vector<int>ans;vector<int>g[N];intmain(){cin>>n;for(inti=1;i<=n;i++){while(1){intx;cin>>x;if(x==0)break;g[i].push_back(x);into[x]++;}}for(inti=1;i<=n;i++)if(into[i]==0)q.push(i);while(!q.empty()){intu=q.front();q.pop();ans.push_back(u);for(intv:g[u]){into[v]--;if(into[v]==0)q.push(v);}}for(inta:ans)cout<<a<<" ";return0;}

小试牛刀:P4017

题外话:一看到生物想到自己地生会考的成绩就闹心ε=(´ο`*)))

题目大意就是找食物网中最大食物链(即从生产者到最高级消费者)的数量。

思路

很显然是DP(万物皆可DP)。
状态:d p [ u ] dp[u]dp[u]表示强制以u uu结尾的食物链的条数。
根据生物知识,食物链的方向由低到高。如果u uu的捕食者是v vv,那么所有指向u uu的食物链都会指向v vv
将食物网建成有向图,拓扑排序后v vv就一定在u uu的后面。
转移:在拓扑排序的基础上,对于所有入度为0的点向外拓展,并将自己的d p dpdp值加到它的捕食者上。
答案:将所有出度为0(最高级消费者)的点的d p dpdp值相加即可。
初始化:将所有入度为0(生产者)的点初始化为1,其余为0。

代码

#include<bits/stdc++.h>usingnamespacestd;#defineN5001#definemod80112002intn,m,dp[N],into[N],out[N];vector<int>g[N];queue<int>q;intmain(){cin>>n>>m;for(inti=1;i<=m;i++){intu,v;cin>>u>>v;g[u].push_back(v);into[v]++;out[u]++;}for(inti=1;i<=n;i++){if(into[i]==0){dp[i]=1;q.push(i);}}while(!q.empty()){intu=q.front();q.pop();for(intv:g[u]){into[v]--;if(into[v]==0)q.push(v);dp[v]=(dp[v]+dp[u])%mod;}}intans=0;for(inti=1;i<=n;i++)if(out[i]==0)ans=(ans+dp[i])%mod;cout<<ans;return0;}

—————————————————————— T h e E n d —————————————————————— ——————————————————————The\ \ End————————————————————————————————————————————TheEnd——————————————————————

http://www.jsqmd.com/news/699945/

相关文章:

  • 30岁Java程序员裸辞All in AI,一年后我成了年薪百万的AI应用开发工程师!
  • Windhawk完全指南:免费开源Windows系统个性化定制神器终极教程
  • 30天快速上手Python-02 Python原生数据结构-2 列表List[]
  • API 批量纯代付接口
  • Switch大气层整合包终极指南:从破解到精通,完整解锁你的游戏主机
  • 如何在5分钟内用kohya_ss轻松训练你的AI绘画模型
  • 04-08-10 结论与总结 (Conclusion)
  • DeepSeek V4正式发布,昇腾超节点系列产品全面支持
  • VSCode多Agent调试崩溃频发?资深架构师紧急披露6个隐藏配置陷阱(含vscode-insiders验证数据)
  • 如何用“五维成熟度”量化品牌资产?专知智库新模型给CTO们一个技术解法
  • 基于Spring框架的银行转账业务,通过XML配置方式实现事务管理
  • 五一出游户外徒步必备:开源生存工具Trail Sense完全指南
  • 告别R-CNN的龟速:用Fast R-CNN实现目标检测的‘一键加速’(附VGG16实战对比)
  • Bridging Human Evaluation to Infrared and Visible Image Fusion
  • OOM Killer 选中你的进程只用了 0.3 毫秒——追踪 oom_badness() 的打分公式和 5 个可调旋钮
  • 5分钟掌握B站视频下载:BilibiliDown终极免费工具使用指南
  • 光伏四可装置设备性能评估:光伏组件衰减率与逆变器效率监测
  • 真空型压力传感器品牌推荐 厂家排行榜 - WHSENSORS
  • 终极Qwerty Learner打字练习软件完整指南:3步快速提升英语输入速度
  • 代价敏感SVM解决数据不平衡分类问题实战
  • 2026年4月 全国GEO优化服务商榜单 AI搜索行业深度解析
  • 2026宁波展厅设计核心转化技巧一线实战解析
  • 如何快速搭建全平台直播弹幕监控系统:面向开发者的终极解决方案
  • 【仅开放72小时】CUDA 13.3.1生产环境适配清单(含PyTorch 2.4/DeepSpeed 0.14/Triton 3.0兼容性矩阵+17个已验证patch)
  • DeepSeek-V4
  • 如何将Spotify歌单永久保存到本地音乐库?
  • Dify同时接入DeepSeek和Ollama:云端省钱+本地隐私,一个应用随便切
  • 昨天还在吹的概念,今天就落后了?AI圈生存指南
  • 【C++高吞吐MCP网关成本控制白皮书】:20年架构师亲授3大降本增效核心策略(实测QPS提升37%,硬件成本直降42%)
  • 异构计算与总线拆分:TVS-h874 混合架构解析