python学习笔记7-图的建立常用技巧

题目链接

  • 题目中给了邻接链表,转为邻接矩阵
  • 初始化邻接矩阵 graph = [[] for _ in range(n)]
  • dfs() 的写法, 用visi避免重复访问,得到每个点所在的联通分量中点的个数
python 复制代码
class Solution:
    def countPairs(self, n: int, edges: List[List[int]]) -> int:
        graph = [[] for _ in range(n)]
        for x, y in edges:
            graph[x].append(y)
            graph[y].append(x)
        
        visi = [False] * n
        def dfs(x: int) -> int:
            visi[x] = True
            count = 1
            for y in graph[x]:
                if not visi[y]:
                    count += dfs(y)
            return count

        res = 0
        for i in range(n):
            if not visi[i]:
                count = dfs(i)
                res += count * (n - count)

        return res // 2
相关推荐
ValhallaCoder3 小时前
hot100-栈
数据结构·python·算法·
MediaTea6 小时前
Python:生成器表达式详解
开发语言·python
-To be number.wan7 小时前
Python数据分析:SciPy科学计算
python·学习·数据分析
Dxy12393102167 小时前
DataFrame数据修改:从基础操作到高效实践的完整指南
python·dataframe
overmind8 小时前
oeasy Python 115 列表弹栈用pop删除指定索引
开发语言·python
hnxaoli9 小时前
win10程序(十六)通达信参数清洗器
开发语言·python·小程序·股票·炒股
电饭叔9 小时前
文本为 “ok”、前景色为白色、背景色为红色,且点击后触发 processOK 回调函数的 tkinter 按钮
开发语言·python
雷电法拉珑10 小时前
财务数据批量采集
linux·前端·python
shangjian00711 小时前
Python基础-With关键字
python
zchxzl12 小时前
亲测2026京津冀可靠广告展会
大数据·人工智能·python