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

永州做网站百度小说排行榜2021

永州做网站,百度小说排行榜2021,郑州网站设计公司,辽宁智能网站建设价位一:概述 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/474228.html

相关文章:

  • 动态网站开发的感想网络广告电话
  • 外贸网站模板外贸网站建设seo优化工作怎么样
  • 住房城乡建设厅网站营口seo
  • 网页制作公司简介文登seo排名
  • 有没有做游戏评测的网站seo网站技术培训
  • 女士春深圳 网站制作东莞海外网络推广
  • 投注网站建设需要多少钱seoshanghai net
  • wordpress建个人网站扬州seo博客
  • 网站开发原型 图重庆seo排名优化
  • 分销商城搭建网站优化外包多少钱
  • 杭州网站建设费用多少钱无忧seo
  • 张家口做公司网站百度网址大全手机版
  • 企业名录搜索软件免费网络优化seo薪酬
  • 网络营销之网站建设百度网址大全下载安装
  • 英德网站建设免费网站注册免费创建网站
  • 网站域名注销流程舆情分析报告模板
  • 网站名称能用商标做名称吗网站软件下载app
  • 便宜的手机网站建设nba哈登最新消息
  • 怎么做网站公众号360收录查询
  • 电影网站开发与设计想做游戏推广怎么找游戏公司
  • 赣州 做网站成功的品牌推广案例分析
  • 好看的网站分享常见的网络营销模式
  • 如何让自己的网站被百度收录口碑营销的好处
  • 网站速度优化 js加载网络营销专业
  • php 新闻类网站怎么做网络营销与推广
  • asp.net手机网站开发网站设计制作哪家好
  • 中铁航空港建设集团网站免费的网络推广渠道有哪些
  • 做网站要准备网站推广优化外包公司
  • 木马网站怎么做网站运营推广方案
  • 基于dw的网站设计论文百度关键词优化平台