C ++:在给定以下文本输入的情况下找到有向图的度数

Posted

技术标签:

【中文标题】C ++:在给定以下文本输入的情况下找到有向图的度数【英文标题】:C++ : Find the degree of a directed graph given the following text input 【发布时间】: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++,伪代码就足够了 :)

谢谢。

【问题讨论】:

欢迎来到 Stack Overflow。请考虑修改您的问题,以确保您提供Minimal, Complete, and Verifiable example,以便人们能够帮助您。确保也包括您自己的对问题的尝试。 【参考方案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;

【讨论】:

以上是关于C ++:在给定以下文本输入的情况下找到有向图的度数的主要内容,如果未能解决你的问题,请参考以下文章

在给定输入症状的情况下找到最相关症状的架构设计

在给定关系和 FD 的情况下找到一组属性的闭包

我该如何在C语言中创建真值表生成器?

删除括号之间的文本,但仅在给定条件下

centos默认情况下root是可以正常的登录?

如何在不使用其父级的情况下设置 SimpleXmlElement 的文本值?