OlveraeUNSW
返回题目列表
COMP2521

DFS · 连通分量个数

DFS · 数一数图有几个连通块

读入一张无向图,输出它有几个连通分量(彼此能互相到达的一组顶点算一块;孤立顶点自成一块)。这是 DFS 最经典的用途之一。

dfs 已经给好(从某点出发标记整块)。请补全 countComponents:遍历每一个顶点,遇到还没被访问的就发起一次新的 dfs,并把计数 +1。

易错点(正是错误实验室里的坑):图可能<strong>不连通</strong>,只从顶点 0 发起一次 DFS 会漏掉别的块。必须 for (v = 0..V-1) if (!visited[v]) { dfs(v); count++; }——每发起一次新 DFS,就发现了一个新的连通块。

输入

  • 第 1 行:V E。
  • 接下来 E 行:每行 u v,无向边(E 可能为 0)。

输出

  • 一行:连通分量的个数。

示例:输入 5 2 / 0 1 / 2 3 → 输出 3({0,1}、{2,3}、{4} 三块)。

样例

stdin
5 2
0 1
2 3
期望输出
3
stdin
4 3
0 1
1 2
2 3
期望输出
1
c-dcc
14