使用C++找到图中的汇节点的数量

使用c++找到图中的汇节点的数量

在本文中,我们将描述解决汇节点数量的重要信息。在这个问题中,我们有一个有 N 个节点(1 到 N)和 M 个边的有向无环图。目标是找出给定图中有多少个汇节点。汇聚节点是不产生任何传出边的节点。这是一个简单的例子 –

Input : n = 4, m = 2Edges[] = {{2, 3}, {4, 3}}Output : 2

寻找解决方案的简单方法

在这种方法中,我们将遍历图的边,将边所指向的集合中的不同元素推入其中,然后减去集合的大小存在的节点总数。

示例

#include using namespace std;int main(){    int n = 4; // number of nodes.    int m = 2; // number of edges.    vector<pair> edges = {{2, 3}, {4, 3}}; // the edges going from first to second.    set s;    for(int i = 0; i < m; i++){        s.insert(edges[i].first); // will keep value of                               // distinct node from which edges are going out.    }    cout << n - s.size(); // answer is the total number of nodes - number of non sink nodes.    return 0;}

输出

2

上述代码说明

在这段代码中,我们将遍历向量边并将该对的第一个元素插入到集合中。它只保留不同的元素,所以现在我们将从节点总数中减去集合的具体大小。上面显示的程序的时间复杂度为 O(N),其中 N 代表图中存在的边数。

结论

在本文中,我们使用集合的帮助解决了 O(N) 时间复杂度中查找图中存在的汇聚节点数量的问题。我们还学习了解决这个问题的C++程序以及解决这个问题的完整方法。我们可以用其他语言比如C、java、python等语言来编写同样的程序。希望这篇文章对您有所帮助。

立即学习“C++免费学习笔记(深入)”;

以上就是使用C++找到图中的汇节点的数量的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:15:18
下一篇 2025年12月9日 14:41:35

相关推荐

  • 使用C++移除给定数字中的重复数字

    在本文中,我们给出了一个数字 n,我们需要删除给定数字中的重复数字。 Input: x = 12224Output: 124Input: x = 124422Output: 1242Input: x = 11332Output: 132 在给定的问题中,我们将遍历所有数字并删除重复的数字。 寻找解决…

    2025年12月17日
    000
  • 如何在C语言中将数组中的单个元素作为参数传递给函数?

    如果要将单个元素作为参数传递,则在函数调用中必须给出数组元素及其下标。 为了接收这些元素,在函数定义中使用简单变量。 示例1 #includemain (){ void display (int, int); int a[5], i; clrscr(); printf (“enter 5…

    2025年12月17日
    000
  • 检查输入字符是字母、数字还是特殊字符在C中

    在本节中,我们将了解如何检查给定字符是数字、字母还是 C 中的某些特殊字符。 字母表是从 A – Z 和 a – z,然后数字为 0 – 9。所有其他字符均为特殊字符。因此,如果我们使用这些条件检查条件,我们可以轻松找到它们。 示例 #include #include main() { char c…

    2025年12月17日
    000
  • 当在C/C++中的数字常量前加上0时,这意味着它是一个八进制数

    有时我们可能会看到一些数字文字,其前缀为0。这表明该数字是八进制数。所以八进制文字在开头包含 0。例如,如果八进制数是 25,那么我们必须写 025。 示例 #include int main() { int a = 025; int b = 063; printf(“Decimal of 25(O…

    2025年12月17日
    000
  • 在C程序中,将等边三角形内切圆的面积计算出来

    在这里我们将看到等边三角形内切圆的面积。三角形的边是“a”。 等边三角形的面积 – 三角形的半周长是 – 所以圆的半径是 – 示例 #include #include using namespace std;float area(float a) { if (a …

    2025年12月17日 好文分享
    000
  • C/C++程序中的数组

    数组是一组固定数量的相同数据类型的项目。这些元素存储在内存中的连续内存位置中。 可以使用方括号“[]”和数组名称像a[4]、a[3]等从其索引值访问值的每个单个元素。 声明数组 在c/c++编程语言中,通过定义数组的类型和长度(元素数量)来声明数组。下面的语法显示了在c/c++中声明数组的方法− d…

    2025年12月17日
    000
  • 解释C语言中选择排序的过程

    选择排序是一种攻击性算法,用于从数组中找到最小的数字,然后将其放置到第一个位置。下一个要遍历的数组将从索引开始,靠近放置最小数字的位置。 选择排序的过程 选择元素列表中第一个最小的元素并将其放置在第一个位置。 对列表中的其余元素重复相同的操作,直到所有元素都获得已排序。 考虑以下列表 –…

    2025年12月17日 好文分享
    000
  • 使用C++编写,找到子数组中的质数数量

    在本文中,我们将描述查找子数组中素数数量的方法。我们有一个正数数组 arr[] 和 q 个查询,其中有两个整数表示我们的范围 {l, R},我们需要找到给定范围内的素数数量。下面是给定问题的示例 – Input : arr[] = {1, 2, 3, 4, 5, 6}, q = 1, L…

    2025年12月17日
    000
  • 在C语言中编写一个打印反向Floyd三角形的程序

    程序描述 弗洛伊德三角形是自然数的直角三角形数组,用于计算机科学教育。它以罗伯特·弗洛伊德的名字命名。它是通过用连续的数字填充三角形的行来定义的,从左上角的 1 开始 1 15 14 13 12 112 3 10 9 8 74 5 6 6 5 47 8 9 10 3 211 12 13 14 15 …

    2025年12月17日
    000
  • 在C++中的可重构数

    给定一个整数类型的值,假设为number。任务是检查给定的数字是否可重构。如果是,打印该数字是可重构数字,否则打印不可能。 什么是可重构数字? 当一个数字可以被其可用因子的总数整除时,它就是可重构的。例如,数字9是可重构的,因为它有3个因子(1、3、9),而9可以被3整除,因此它是一个可重构数字。 …

    2025年12月17日
    000
  • 计算菱形的面积和周长的程序,已知对角线是什么?在C++中,什么是菱形?

    什么是菱形? 在几何学中,菱形是四个边长相同的四边形。菱形与形状菱形相似。如果菱形的对角线成直角,那么它就变成正方形。 菱形的性质是 – 边相等对边平行,对角相等,是平行四边形对角线平分直角 下图是菱形 立即学习“C++免费学习笔记(深入)”; 问题 给定对角线,假设 d1 和 d2 的…

    2025年12月17日
    000
  • 使用C++反转一个双向链表

    在本文中,我们有一个双向链表,我们将解释在 C++ 中反转双向链表的不同方法。例如 – Input : {1, 2, 3, 4}Output : {4, 3, 2, 1} 通常会想到一种方法,但我们将使用两种方法 – 正常方法和非正统方法。 正常方法 在这种方法中,我们将经历…

    2025年12月17日
    000
  • C令牌是什么?

    这个C程序是一系列指令,每个指令都是一系列个体单元的集合。 C程序中的每个小个体单元通常被称为令牌,C程序中的每个指令都是令牌的集合。 令牌用于构建C程序,它们也被称为C程序的基本构建块。 在C程序中,令牌包含以下内容: 关键字标识符运算符特殊符号常量字符串数据值 在C程序中,所有这些关键字、标识符…

    2025年12月17日
    000
  • 在C语言中,while(1)和while(0)之间的区别是什么?

    我们知道在C语言中,’while’关键字用于定义一个循环,该循环根据传递给循环的条件来工作。现在,由于条件可以有两个值,即真或假,所以如果条件为真,则while块内的代码将被重复执行,如果条件为假,则代码将不会被执行。 现在,通过将参数传递给while循环,我们可以区分whi…

    2025年12月17日
    000
  • 在C语言中,是否可以在main()函数中传递参数?

    是的,我们可以在 main() 函数中给出参数。 C 中的命令行参数在系统命令行中的程序名称之后指定,这些参数值将传递给程序执行期间的程序。 argc 和 argv 是可以传递给 main 函数的两个参数。 但是当您从终端运行程序时,main() 函数实际上由操作系统(或 shell 程序)调用。 …

    2025年12月17日
    000
  • 如何在C中修改一个const变量?

    在C或C++中,我们可以使用常量变量。常量变量的值在初始化后就不能更改。在本节中,我们将了解如何更改某些常量变量的值。 如果我们想要更改常量变量的值,则会产生编译时错误。请检查以下代码以获得更好的想法。 示例 #include main() { const int x = 10; //define …

    2025年12月17日
    000
  • 使用C++找到Pell数

    在给定的问题中,我们得到一个整数 n,我们需要找到 Pn,即该位置的咒语编号。现在,正如我们所知,拼写数是由以下公式给出的序列的一部分 -Pn = 2*Pn-1 + Pn-2 前两个起始数字 – P0 = 0 和 P1 = 1 查找方法解决方案 现在我们将通过两种方法来解决这个问题:递归…

    2025年12月17日
    000
  • 在C语言中,预定义标识符__func__

    标识符是在编程中给实体赋予的名称,以在程序中进行标识。 通常,标识符是由程序员创建的,以实现高效工作,但也有一些预定义的标识符内置在编程中。例如,cout、cin等。 在这里,我们将看到C编程语言中的一个预定义标识符__func__。 __func__的正式定义为 − 立即学习“C语言免费学习笔记(…

    2025年12月17日
    000
  • c语言如何输出double类型

    c语言输出double类型的方法:1、使用printf函数输出,可以用于输出不同类型的值,包括double类型;2、使用fprintf函数输出到文件,使用fprintf函数可以将double类型的值输出到指定的文件中;3、使用sprintf函数输出到字符串,有时候,需要将double类型的值输出到一…

    2025年12月17日
    000
  • 用C语言编写模拟非确定有限自动机(NFA)的程序

    在这个问题中,我们将创建一个 C 程序来模拟非确定性有限自动机 (NFA)。 NFA(非确定性有限自动机)有限状态机可以移动到输入符号的任意状态组合,即没有机器将移动到的确切状态。 NDFA 的正式定义 – NFA / NDFA(非确定性有限自动机)可以用 5 元组(Q、Σ、δ、q0、F…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信