首页 / 客观题库

80242 - 2026编程挑战赛Python提高组42

题目(材料题)

(2)求连通分量的个数

给定一个包含 n 个节点(编号 0 到 n-1)的无向图,以及若干条边 edges。请使用并查集(Union-Find)计算图中连通分量的个数。要求:使用路径压缩 + 按秩合并;最终返回连通分量数量。

01 def count_components(n, edges):

02        parent =   ①    

03     

04     rank = [0] * n

05     def find(x):

06         if parent[x] != x:

07             parent[x] =    ②  

08         return parent[x]

09     def union(x, y):

10         rx, ry = find(x), find(y)

11         if rx != ry:

12             if rank[rx] < rank[ry]:

13                   ③   

14             elif rank[rx] > rank[ry]:

15                   ④    

16             else:

17                 parent[ry] = rx

18                 rank[rx] += 1

19     for u, v in edges:

20         union(u, v)

21     roots = set()

22     for i in range(n):

23         roots.add(find(i))

24     return   ⑤  

 

||
( 单选 )

① 处应填

A [0]*n

B [i for i in range(n)]

C [1]*n

D [-1]*n

( 单选 )

② 处应填

A x

B parent[parent[x]]

C find(x)

D find(parent[x])

( 单选 )

③ 处应填

A parent[rx] = ry

B parent[ry] = rx

C rx = ry

D ry = rx

( 单选 )

④ 处应填 

A parent[rx] = ry

B parent[ry] = rx

C rx = ry

D ry = rx

( 单选 )

⑤ 处应填

A n

B len(edges)

C len(roots)

D sum(parent)

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36