图的拓扑序列(BFS)

way:找入度为0的节点删除,减少其他节点的入度,继续找入度为0的节点,直到删除完所有的图节点。(遍历node的neighbors就能得到neighbors的入度信息)

cpp 复制代码
#include<iostream>
#include<vector>
#include<map>
#include<queue>
using namespace std;


class Node {
public:
	int label;
	vector<Node*> neighbors;
	Node(int x)
	{
		label=x;
	}
};


vector<Node*> topSort(vector<Node*> graph)
{
	map<Node*, int>indegreeMap;
	//统计所有节点的入度信息到indegreeMap中
	for(auto node: graph)
	{
		indegreeMap[node]=0;
	}

	for(auto node: graph)
	{
		for(auto next: node->neighbors)
		{
			indegreeMap[next] = indegreeMap[next]+1;
		}
	}

	//将入度为0的节点放入zeroQue中
	queue<Node*> zeroQue;
	for(auto pa: indegreeMap)
	{
		if(pa.second == 0)
		{
			zeroQue.push(pa.first);
		}
	}

	vector<Node*> result;

	//开始删除节点,减少入度
	while(!zeroQue.empty())
	{
		Node *cur = zeroQue.front();
		zeroQue.pop();
		result.push_back(cur);
		for(auto next: cur->neighbors)
		{
			indegreeMap[next] = indegreeMap[next]-1;
			if(indegreeMap[next]==0)
			{
				zeroQue.push(next);
			}
		}
	}
	return result;
}
相关推荐
CoovallyAIHub11 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP11 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo12 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo12 小时前
300:最长递增子序列
算法
CoovallyAIHub17 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub17 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v2 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工2 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农2 天前
【React用到的一些算法】游标和栈
算法·react.js