六度空间 你和任何一个陌生人之间所间隔的人不会超过六个 算法思路 对节点进行广度优先搜索搜索过程中累计访问的节点数需要记录“层数”,仅计算6层以内的节点数 void SDS() { for( each V in G ){ count = BFS(V); Output(count/N); } } int BFS() { visited[V] = true; count = 1; level = 0; last = V; Enqueue(V, Q); while( !IsEmpty(Q) ){ V = Dequeue(Q); for( V的每个邻接点 W ) if( !visited[W]){ visited[W] = true; Enqueue(W); tail = W; } if( V == last ) { level++; last = tail; } if( level == 6 ) break; } return count; } 用什么方法存储图比较好? 在六度空间问题中,题目假设边的条数不超过节点数的33倍。用什么方法存储图比较好?为什么?邻接表存储空间为N+2E,当E≤33N时,N+2E≤67N。即当N≤67时,邻接表存储比邻接矩阵少占空间,故邻接表法。