【问题标题】:C++ : Find the degree of a directed graph given the following text inputC ++:在给定以下文本输入的情况下找到有向图的度数
【发布时间】:2015-12-06 00:48:46
【问题描述】:

我正在尝试查找 .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++,伪代码就足够了 :)

谢谢。

【问题讨论】:

标签: c++ algorithm graph


【解决方案1】:

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

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;
}

【讨论】:

    猜你喜欢
    • 2014-05-02
    • 2014-01-06
    • 2019-10-14
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多