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
相关推荐
乔江seven11 分钟前
【python轻量级Web框架 Flask 】1 Flask 初识
开发语言·后端·python·flask
Bruk.Liu11 分钟前
(LangChain实战3):LangChain阻塞式invoke与流式stream的调用
人工智能·python·langchain
岱宗夫up18 分钟前
Scrapy框架实战教程(上):从入门到实战,搭建你的第一个专业爬虫
爬虫·python·scrapy
Bruk.Liu19 分钟前
(LangChain实战4):LangChain消息模版PromptTemplate
人工智能·python·langchain
SunnyRivers20 分钟前
Asyncio 提速秘籍:用 run_in_executor 与 to_thread 巧解同步阻塞难题
python·asyncio·to_thread·run_in_executor
亚林瓜子23 分钟前
pyspark分组计数
python·spark·pyspark·分组统计
查无此人byebye27 分钟前
从零解读CLIP核心源码:PyTorch实现版逐行解析
人工智能·pytorch·python·深度学习·机器学习·自然语言处理·音视频
chao_78928 分钟前
双设备全栈开发最佳实践[mac系统]
git·python·macos·docker·vue·全栈
筷乐老六喝旺仔33 分钟前
使用PyQt5创建现代化的桌面应用程序
jvm·数据库·python
LilySesy35 分钟前
【SAP-MOM项目】二、接口对接(中)
开发语言·python·pandas·restful·sap·abap