首页 > 其他分享 >有向图求每个节点到可到达图中所有节点的个数

有向图求每个节点到可到达图中所有节点的个数

时间:2024-07-29 16:55:57浏览次数:13  
标签:count node 有向图 graph 个数 计数器 visited 节点

1.初始化:为每个节点初始化一个计数器,记录从该节点出发可以到达的节点数量。
2.深度优先搜索(DFS):从每个未访问的节点开始,进行深度优先搜索。在搜索过程中,标记访问过的节点,并更新计数器。

广度优先搜索(BFS):或者使用广度优先搜索,从每个未访问的节点开始,逐层扩展,标记访问过的节点,并更新计数器。
3.更新计数器:在搜索过程中,每当访问到一个新节点,就将计数器加一。
4.结果输出:最终,每个节点的计数器值即为从该节点出发可以到达的节点数量。

dfs实现

def dfs(graph, node, visited, count):
    visited[node] = True
    count[node] += 1
    for neighbor in graph[node]:
        if not visited[neighbor]:
            dfs(graph, neighbor, visited, count)

def count_reachable_nodes(graph):
    n = len(graph)
    visited = [False] * n
    count = [0] * n

    for node in range(n):
        if not visited[node]:
            dfs(graph, node, visited, count)

    return count

# 示例图
graph = {
    0: [1, 2],
    1: [2],
    2: [3],
    3: []
}

reachable_count = count_reachable_nodes(graph)
print(reachable_count)

 

标签:count,node,有向图,graph,个数,计数器,visited,节点
From: https://www.cnblogs.com/barrysgy/p/18330486

相关文章

  • PAT 乙级 真题练习 1002 写出这个数
    问题描述读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格......
  • ComfyUI插件:ComfyUI Impact 节点(二)
    前言:学习ComfyUI是一场持久战,而ComfyUIImpact是一个庞大的模块节点库,内置许多非常实用且强大的功能节点,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修复、区域增强、......
  • [java]小程序,用接口的方式计算两个数的加减乘除
           ......
  • js切割字符串指定个数?
    如果你想剪切字符串的开头几个字符,可以使用JavaScript的substring()方法或者slice()方法。使用substring()方法:letstr="Hello,World!";letcutLength=5;//要剪切的字符数 letnewStr=str.substring(cutLength);console.log(newStr);//输出:",Worl......
  • LeetCode222.完全二叉树的节点个数
    题目链接:https://leetcode.cn/problems/count-complete-tree-nodes/description/题目叙述给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该......
  • 如何强制某些节点在networkX中具有特定颜色
    我想要为networkx图的节点着色,但我也希望能够强制一组节点为特定颜色,同时仍然能够正确地为图中的所有节点着色。有谁知道如何做到这一点?可以通过将color属性传递给nx.draw函数,以将特定节点强制为特定颜色,同时仍然能够正确地为图形中的所有节点着色。......
  • 请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标
    publicclassshuzu05{//编写一个main方法publicstaticvoidmain(String[]args){//请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标//思路分析//1.定义一个int数组int[]arr={4,-1,9,10,23};//2.假定max=arr......
  • 写一个函数返回参数二进制中1的个数(c语言)
    1.int一共有32位,我们要知道一个数取余2等于1(n%2==1),就可以得到二进制中1的个数.然后一个数除于2(n=n/2),就可以使32位向右一位(例如:5为101,5/2==2,2为10,)。方法1(不可以输入负数)//写一个函数返回参数二进制中1的个数//方法1intcount(intn,intz){ //当a为正数的 if(n>......
  • ComfyUI插件:ComfyUI Impact 节点(一)
    前言:学习ComfyUI是一场持久战,而ComfyUIImpact是一个庞大的模块节点库,内置许多非常实用且强大的功能节点,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修复、区域增强、......
  • ComfyUI插件:ComfyUI Impact 节点(一)
    前言:学习ComfyUI是一场持久战,而ComfyUIImpact是一个庞大的模块节点库,内置许多非常实用且强大的功能节点,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修复、区域增......