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> °ree, 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 ++:在给定以下文本输入的情况下找到有向图的度数的主要内容,如果未能解决你的问题,请参考以下文章