7 7 六度空間

2021-09-03 08:30:30 字數 1879 閱讀 3477

「六度空間」理論又稱作「六度分隔(six degrees of separation)」理論。這個理論可以通俗地闡述為:「你和任何乙個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何乙個陌生人。」如圖1所示。

圖1 六度空間示意圖

假如給你乙個社交網路圖,請你對每個節點計算符合「六度空間」理論的結點佔結點總數的百分比。

輸入第1行給出兩個正整數,分別表示社交網路圖的結點數n(1對每個結點輸出與該結點距離不超過6的結點數占結點總數的百分比,精確到小數點後2位。每個結節點輸出一行,格式為「結點編號:(空格)百分比%」。

10 9

1 22 3

3 44 5

5 66 7

7 88 9

9 10

1: 70.00%

2: 80.00%

3: 90.00%

4: 100.00%

5: 100.00%

6: 100.00%

7: 100.00%

8: 90.00%

9: 80.00%

10: 70.00%

思路:

1.對每個結點都進行廣度優先搜尋(bfs)

2.搜尋過程中累計訪問的結點數

3.搜尋不需要進行完,僅計算6層以內的結點數

具體**實現為:

#include#include#include#define true 1

#define false 0

#define maxvertexnum 10005 //最大頂點數設為100

typedef int vertex; //用頂點下標表示頂點,為整型

/* 邊的定義 */

typedef struct enode *ptrtoenode;

struct enode;

typedef ptrtoenode edge;

/* 鄰接點的定義 */

typedef struct adjvnode *ptrtoadjvnode;

struct adjvnode;

/* 頂點表頭結點的定義 */

typedef struct vnode adjlist[maxvertexnum]; /* adjlist是鄰接表型別 */

/* 圖結點的定義 */

typedef struct gnode *ptrtognode;

struct gnode;

typedef ptrtognode lgraph; /* 以鄰接表方式儲存的圖型別 */

vertex visited[maxvertexnum] = ;

lgraph buildgraph();

void six_degree_space(lgraph graph);

int main()

lgraph creategraph( int vertexnum )

void insertedge( lgraph graph, edge e )

lgraph buildgraph()

}return graph;

}int bfs (lgraph graph, vertex s)

} if(v == last)

if(level == 6) break;

} /* while結束*/

return count;

}void six_degree_space(lgraph graph)

}

7 7 六度空間

傳送門 題目描述 假如給你乙個社交網路圖,請你對每個節點計算符合 六度空間 理論的結點佔結點總數的百分比。輸入格式 輸入第1行給出兩個正整數,分別表示社交網路圖的結點數n 1輸出格式 對每個結點輸出與該結點距離不超過6的結點數占結點總數的百分比,精確到小數點後2位。每個結節點輸出一行,格式為 結點編...

7 7 六度空間

7 7 六度空間 30 分 六度空間 理論又稱作 六度分隔 six degrees of separation 理論。這個理論可以通俗地闡述為 你和任何乙個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何乙個陌生人。如圖1所示。圖1 六度空間示意圖 假如給你乙個社交網路圖,...

7 7 六度空間

六度空間 理論又稱作 六度分隔 six degrees of separation 理論。這個理論可以通俗地闡述為 你和任何乙個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何乙個陌生人。如圖1所示。圖1 六度空間示意圖 假如給你乙個社交網路圖,請你對每個節點計算符合 六度...