求有向图中某顶点的入度
发布日期:2021-05-07 17:58:54 浏览次数:23 分类:精选文章

本文共 1556 字,大约阅读时间需要 5 分钟。

有向图的构建与入度计算

在解决这个问题时,我们需要创建一个有向图,并计算某个顶点的入度。以下是详细的步骤和方法:

输入描述

  • 第一行:顶点数和边数,空格隔开。
  • 第二行:每个顶点的数据,中间没有空格。
  • 第三行:每条边,格式为i j,中间有空格。
  • 第四行:要查询的顶点序号。
  • 输出描述

    输出某个顶点的出度。

    方法思路

  • 读取输入数据

    • 读取顶点数和边数。
    • 读取每个顶点的数据,存储在数组中。
    • 读取每条边,存储在二维数组中。
  • 计算出度

    • 遍历所有顶点,检查该顶点有多少条出边。
  • 解决代码

    #include 
    #include
    using namespace std;
    class Text {
    public:
    Text(int v, int e) {
    CountInter = 0;
    CountOuter = 0;
    vertexNum = v;
    edgeNum = e;
    int i;
    for (i = 0; i < vertexNum; i++) {
    char c;
    cin >> c;
    vertex[i] = c;
    }
    for (int x = 0; x < vertexNum; x++) {
    for (int y = 0; y < vertexNum; y++) {
    edge[x][y] = 0;
    }
    }
    for (int j = 0; j < edgeNum; j++) {
    int x, y;
    cin >> x >> y;
    edge[x][y] = 1;
    }
    }
    void CalculateOuter(int v) {
    CountOuter = 0;
    for (int x = 0; x < vertexNum; x++) {
    if (edge[x][v] == 1) {
    CountOuter++;
    }
    }
    }
    private:
    char vertex[100];
    int edge[100][100];
    int vertexNum;
    int edgeNum;
    int CountOuter;
    };
    int main() {
    int v, e;
    cin >> v >> e;
    Text T(v, e);
    int n;
    cin >> n;
    T.CalculateOuter(n);
    cout << T.CountOuter << endl;
    return 0;
    }

    代码解释

  • 类定义Text 类用于存储和处理有向图的数据。

    • vertex 数组存储顶点数据。
    • edge 二维数组存储图的边信息。
    • CountOuter 记录某顶点的出度。
  • 构造函数

    • 初始化顶点数和边数。
    • 读取顶点数据并存储。
    • 初始化边数组为0。
    • 读取每条边并存储。
  • 计算出度

    • 遍历所有顶点,检查边数组,统计出度。
  • 主函数

    • 读取输入数据。
    • 调用计算出度方法并输出结果。
  • 通过上述方法,我们可以正确构建有向图并计算出某顶点的出度。

    上一篇:无向图的邻接矩阵表示法验证程序
    下一篇:求一个无向图的连通分量

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年05月12日 20时47分24秒