C++:在给定以下文本输入的情况下,求有向图的阶数

C++ : Find the degree of a directed graph given the following text input

本文关键字:情况下 有向图 输入 文本 下文 C++      更新时间:2023-10-16

我试图找到一个相当大的图(用于图着色)在.txt文件中表示的程度,例如:

# Directed graph (each unordered pair of nodes is saved once): roadNet-PA.txt 
# Pennsylvania road network
# Nodes: 1088092 Edges: 3083796
# FromNodeId    ToNodeId
0   1
0   6309
0   6353
1   0
6353    0
6353    6354
6353    6364
6353    6386
6309    0
6309    6310
6309    6344
2   3
2   4
2   7
.   .
.   .
.   .
Etc.

每一行表示连接第一节点和第二节点的边。在给定这些信息的情况下,确定每个顶点的度数的好方法是什么?答案不一定是C++,伪代码就足够了:)

谢谢。

计算每个数字(节点)出现的次数。

void update_degree(std::map<int, int> &degree, int node) {
    if (degree.find(node) == degree.end()) {
        degree[node] = 1;
    } else {
        degree[node]++;
    }
}
std::map<int, int> get_degree(std::vector<std::pair<int, int> > edges) {
    std::map<int, int> degree;
    for (std::vector<std::pair<int, int> >::iterator it = edges.begin(); it != edges.end(); it++) {
        update_degree(degree, it->first);
        update_degree(degree, it->second);
    }
    return degree;
}