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

【模板】拓扑排序

B3644 【模板】拓扑排序 / 家谱树 - 洛谷

拓扑排序的步骤:

  • 计算每个点的入度。

  • 入度为 0 就加入队列。

  • 当队列不为空则循环:

    • 取出队首元素并输出。

    • 遍历队首元素的连边,对应节点的入度 −1。

    • 当对应的节点入度为 0 就加入队列。

#include<bits/stdc++.h>
using namespace std;
signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int n;cin>>n;vector<vector<int>>edge(n+1);vector<int>in(n+1);for(int i=1;i<=n;i++){int t;while(1){cin>>t;if(t==0)break;else{edge[i].push_back(t);in[t]++;}}}queue<int>q;for(int i=1;i<=n;i++){if(!in[i])q.push(i);}while(!q.empty()){int f=q.front();cout<<f<<" ";q.pop();for(int i=0;i<edge[f].size();i++){in[edge[f][i]]--;if(in[edge[f][i]]==0)q.push(edge[f][i]);}}return 0;
}

【动画讲解】这绝对是2025年最细最易懂的拓扑排序教程,数据结构和算法_哔哩哔哩_bilibili

http://www.dtcms.com/a/325076.html

相关文章:

  • 性能解析案例
  • 人工智能与体育:体育产业的革新
  • Vue3从入门到精通: 2.5 Vue3组件库开发与设计系统构建
  • Python day40
  • Leetcode 3645. Maximum Total from Optimal Activation Order
  • vulnhub-drippingblues靶场攻略
  • VTA学习笔记
  • 实现MATLAB2024b和M文件关联(防止运行多个MATLAB)
  • iptables -F 与 iptables -X
  • GNN训练:本地训练数据准备
  • scikit-learn/sklearn学习|线性回归解读
  • 虚拟机安装ubuntu系统
  • C++多线程服务器
  • MySQL基础知识总结
  • MySQL 序列使用详细说明
  • RAG (Retrieval-Augmented Generation) 原理详解与实例
  • 专题二_滑动窗口_最小覆盖子串
  • 【lucene】BlockDocsEnum 跟BlockImpactsDocsEnum 的区别
  • C++入门学习5
  • Boost.Asio io_service 与 线程 的分析
  • playwright-mcp 项目全解析:从理论到实践
  • 消息队列系统测试报告
  • Effective C++ 条款33:避免遮掩继承而来的名称
  • 企业临时文件分享方案:基于本地加密的轻量级实现
  • Unity3D游戏中如何制作空气墙
  • 动态群签名-DGS:实现抗女巫攻击
  • eBay功能升级:卖家提升流量与转化的新契机
  • 深入解析NumPy广播机制:让不同形状的数组无缝运算
  • 【MySQL——第三章 :MySQL库表操作】
  • Redis 数据类型和单线程模型补充