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

永州做网站厦门百度整站优化服务

永州做网站,厦门百度整站优化服务,如何给自己的公司做网站,四川建设网是什么单位一:概述 Kahn 拓扑排序算法是一种基于入度的广度优先搜索方法。它通过反复选择入度为 0 的节点加入结果序列,并移除相关边、更新入度,直到所有节点处理完毕。若最后结果中节点数小于图中节点总数,则说明图中存在环,拓扑…

一:概述

        Kahn 拓扑排序算法是一种基于入度的广度优先搜索方法。它通过反复选择入度为 0 的节点加入结果序列,并移除相关边、更新入度,直到所有节点处理完毕。若最后结果中节点数小于图中节点总数,则说明图中存在环,拓扑排序失败。该算法时间复杂度为 O(V+E),既高效又能检测环,是处理任务依赖等问题的常用方法。

二:实现

#pragma once 
#include <iostream>
#include <vector>
#include <queue>
#include <cassert>class Graph
{
private:int V; std::vector<std::vector<int>> adj; 
public:Graph(int vertices): V(vertices), adj(vertices) {}void addEdge(int u, int v){adj[u].push_back(v);}std::vector<int> topologicalSort(){std::vector<int> indegree(V, 0);std::vector<int> result; for (const auto& neighbors : adj){for (int v : neighbors)indegree[v]++;}std::queue<int> q;for (int i = 0; i < V; ++i){if (indegree[i] == 0)q.push(i);}while (!q.empty()){int u = q.front();q.pop(); result.push_back(u);for (int v : adj[u]){if (--indegree[v] == 0)q.push(v);}}if (result.size() != V){return {};}return result;}
};int test() {// Test A: multiple paths convergingstd::cout << "Test A: multiple paths converging\n";Graph ga(4);ga.addEdge(0, 1);ga.addEdge(0, 2);ga.addEdge(1, 3);ga.addEdge(2, 3);auto ans_a = ga.topologicalSort();std::cout << "Topological Sorting Order: ";for (int i : ans_a) std::cout << i << " ";std::cout << '\n';// Test B: complex DAG with multiple sources and sinksstd::cout << "Test B: complex DAG with multiple sources and sinks\n";Graph gb(8);gb.addEdge(0, 1);gb.addEdge(0, 3);gb.addEdge(1, 4);gb.addEdge(3, 4);gb.addEdge(4, 6);gb.addEdge(4, 7);gb.addEdge(5, 6);auto ans_b = gb.topologicalSort();std::cout << "Topological Sorting Order: ";for (int i : ans_b) std::cout << i << " ";std::cout << '\n';// Test C: with expected outputstd::cout << "Test C: expected order check\n";Graph g2(5);g2.addEdge(0, 1);g2.addEdge(0, 2);g2.addEdge(1, 2);g2.addEdge(2, 3);g2.addEdge(1, 3);g2.addEdge(2, 4);auto ans_c = g2.topologicalSort();std::vector<int> expected_c = { 0, 1, 2, 4, 3 };std::cout << "Topological Sorting Order: ";for (int i : ans_c) std::cout << i << " ";std::cout << '\n';//assert(ans_c == expected_c);std::cout << "Test Passed\n\n";// Test D: multiple independent chains mergedstd::cout << "Test D: multiple independent chains merged\n";Graph gc(7);gc.addEdge(0, 1);gc.addEdge(1, 2);gc.addEdge(2, 3);gc.addEdge(3, 4);gc.addEdge(6, 4);gc.addEdge(5, 4);auto ans_d = gc.topologicalSort();std::cout << "Topological Sorting Order: ";for (int i : ans_d) std::cout << i << " ";std::cout << '\n';// Test E: graph with cyclestd::cout << "Test E: graph with cycle\n";Graph g3(3);g3.addEdge(0, 1);g3.addEdge(1, 2);g3.addEdge(2, 0);try {g3.topologicalSort();std::cout << "Test Failed: should have thrown an exception\n";}catch (const std::invalid_argument& e) {std::cout << "Test Passed: cycle correctly detected\n";}return 0;
}

http://www.dtcms.com/wzjs/10415.html

相关文章:

  • 西安网站制作公司排seo综合检测
  • 临猗商城网站建设平台50篇经典软文100字
  • php网站建设全程实例4p 4c 4r营销理论区别
  • 学校门户网站建设的优势巩义网络推广公司
  • 网站防止非法链接怎么做引流推广多少钱一个
  • 网站风格对比信息表win10优化软件
  • 微信公众平台是什么杭州优化外包哪里好
  • p2p理财网站开发windows10优化软件
  • 没有经验可以做网站编辑吗seo每日工作内容
  • 网站建设公司厂商品seo优化是什么意思
  • 共青城网站建设免费信息发布平台网站
  • 微信的微网站模板下载不了营销页面设计
  • 网站建设页面seo销售好做吗
  • 北京市网站公安备案查询系统营销网站建设软件下载
  • 做外贸网站功能专业软文平台
  • 手机版网站设计网站服务器查询
  • Wordpress的未来重庆seo哪个强
  • 网站编辑难做吗上海seo推广平台
  • 陕西省住房和城乡建设厅网站上查询2345网址导航官网
  • 猫扑网站开发的网游大数据营销推广精准粉
  • 网站地图怎么建设网络推广外包一年多少钱
  • 宁波北仑做公司网站百度学术论文查重入口
  • 宝塔 怎么做网站信息流广告优化师
  • 品网站建设公司排名关键词优化排名要多少钱
  • 德州手机网站建设报价百度大全下载
  • 新闻更新的web网站开发免费网站在线观看人数在哪
  • 网站有了订单邮箱提醒代码百度一下百度搜索入口
  • 网页编辑实训报告杭州百度seo代理
  • 郑州做网站元辰网站优化排名优化
  • 毕节做网站建网站教程