🐵指尖猴全新升级
第15课:图的概念
🕸️

图的概念

点与线,织出万物相连的世界!

📖知识引入

🔵顶点与边
图=顶点集合+边集合,城市是点、道路是边
➡️有向与无向
单行道是有向边,双向路是无向边,看清楚再建图
📊度数
与顶点相连的边数叫度,所有点度数之和=2×边数
🧩连通块
互相能到达的点组成一伙,用并查集一数便知有几伙
💡
n个顶点的无向完全图有n(n-1)/2条边——图稠不稠密,决定你选哪种存法

🔍用并查集数连通块

#include <iostream>
using namespace std;

int fa[105];
int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); }

int main() {
    int n = 5;  // 5 个点
    for (int i = 1; i <= n; i++) fa[i] = i;
    fa[find(1)] = find(2);   // 加边 (1,2)
    fa[find(3)] = find(4);   // 加边 (3,4)
    int blocks = 0;
    for (int i = 1; i <= n; i++)
        if (find(i) == i) blocks++;   // 根的个数=连通块数
    cout << blocks << endl;  // 输出 3:{1,2} {3,4} {5}
    return 0;
}

每加一条边就合并一次,最后数一数有几个根就有几个连通块。

🎯小测验

第1题:图由什么组成?

第2题:无向图所有顶点度数之和与边数的关系?

第3题:统计连通块个数可以用什么数据结构?

📝本课知识点

  • ✓图=顶点+边
  • ✓度数和=2×边数
  • ✓并查集数连通块
第15课完成!继续探索下一课吧 🚀