Code Practice Journal | Day58_Graph08 Topological Sorting

2024-08-30 18:04

本文主要是介绍Code Practice Journal | Day58_Graph08 Topological Sorting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 概念

在一个有向无环图(DAG)中,根据节点的依赖关系,对所有的节点进行线性排序的算法

拓扑排序的结果不一定是唯一的

2. 实现

2.1 BFS(卡恩算法)

1、步骤

2、代码实现

以KamaCoder 117.软体构建
题目:117. 软件构建 (kamacoder.com)

class Program
{public static void Main(string[] args){// 处理输入string[] dimensions = Console.ReadLine().Split();int n = int.Parse(dimensions[0]);int m = int.Parse(dimensions[1]);// 邻接表 && 入度List<int>[] graph = new List<int>[n];for (int i = 0; i < n; i++){graph[i] = new List<int>();}int[] indegree = new int[n];for (int i = 0; i < m; i++){string[] nodes = Console.ReadLine().Split();int parent = int.Parse(nodes[0]);int child = int.Parse(nodes[1]);graph[parent].Add(child);indegree[child]++;}// TS & 输出List<int> result = new List<int>();TStra(graph, indegree, result, n);Console.WriteLine(result.Count == n ? string.Join(" ", result) : "-1");}public static void TStra(List<int>[] graph, int[] indegree, List<int> result, int n){Queue<int> nodes = new Queue<int>();for (int i = 0; i < indegree.Length; i++){if (indegree[i] == 0){nodes.Enqueue(i);indegree[i] = -1;}}if (nodes.Count == 0) return;while (nodes.Count > 0){int cur = nodes.Dequeue();result.Add(cur);foreach (int child in graph[cur]){indegree[child]--;}}if (result.Count == n) return;else{TStra(graph, indegree, result, n);}}
}
2.2 DFS(待更)

这篇关于Code Practice Journal | Day58_Graph08 Topological Sorting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121546

相关文章

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

Linux日志-journal日志

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux 系统中的日志是记录系统活动和事件的重要工具,它们可以帮助管理员监视系统状态、调查问题以及了解系统运行状况。主要涉及到系统日志,登录日志,定时任务日志,监控日志,崩溃日志,二进制日志等内容,这些日志都存储在/var/log目录下,有的日志文本格式,可以直接使用

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

Sorting It All Out POJ(拓扑排序+floyd)

一个就是简单的拓扑排序,一个就是利用floyd判断是否存在环 #include<cstdio>#include<cstring>#include<vector>#include<queue>using namespace std;#define MAXD 30#define MAX_SIZE 1000vector<int>G[MAXD];int n,m;char L[MAX

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

解决服务器VS Code中Jupyter突然崩溃的问题

问题 本来在服务器Anaconda的Python环境里装其他的包,装完了想在Jupyter里写代码验证一下有没有装好,一运行发现Jupyter崩溃了!?报错如下所示 Failed to start the Kernel. ImportError: /home/hujh/anaconda3/envs/mia/lib/python3.12/lib-dynload/_sqlite3.cpython-

Behind the Code:与 Rakic 和 Todorovic 对话 OriginTrail 如何实现 AI 去中心化

原文:https://www.youtube.com/watch?v=ZMuLyLCtE3s&list=PLtyd7v_I7PGnko80O0LCwQQsvhwAMu9cv&index=12 作者:The Kusamarian 编译:OneBlock+ 随着人工智能技术的飞速发展,一系列前所未有的挑战随之而来:模型的衰退与互联网的潜在威胁愈发明显。AI 的增长曲线可能因训练过程中的瓶颈而趋于平

冒泡排序和鸡尾酒排序(code)

昨天回顾了下冒泡排序和鸡尾酒排序,用面向对象的方式写了一下,并且优化了代码,记录一下~ 一、冒泡排序 # 冒泡排序class BubbleSort(object):def __init__(self, data_list):self.data_list = data_listself.length = len(data_list)# 简单粗暴的排序方式def b_sort(self):d