我试图找到.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 ++中,伪代码就足够了:)
谢谢。
答案 0 :(得分:0)
计算每个数字(节点)出现的次数。
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;
}