7 7 六度空間 30分 (鄰接表。。麻煩)

2021-10-09 14:09:42 字數 1873 閱讀 2485

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

圖1  六度空間示意圖
輸入第1行給出兩個正整數,分別表示社交網路圖的結點數n(11091

2233

4455

6677

8899

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

%

dir:用bfs遍歷然後除於總人數,輸出認識的人佔總人數的百分比。鄰接表寫起來有點麻煩,這題開個二維的也可以過或者vector也可以。。。。鄰接表的寫法是按照mooc上陳越姥姥的方法。。。

鄰接表

#include

#include

#include

#include

using

namespace std;

#define n 1005

//最大頂點數

#define mem(a) memset(a,0,sizeof(a))

typedef

struct enode *prtoenode;

struct enode

;typedef prtoenode edge ;

typedef

struct adjv *prtoadjv;

struct adjv

;typedef

struct vnodeadjlist[n]

;typedef

struct gnode *prtognode;

struct gnode

;typedef prtognode lgraph;

struct state

;int vist[n]

;//用來標記當前頂點有沒有被訪問,0表示沒有,1表示有

intbfs

(int

,lgraph)

;//bfs遍歷

lgraph creatlgraph

(int);

//初始化鄰接表

void

insert

(lgraph,edge)

;//往表裡插入邊的資訊

lgraph buildlgraph()

;//建表

intmain()

return0;

}lgraph creatlgraph

(int nv)

return graph;

}void

insert

(lgraph graph, edge e)

lgraph buildlgraph()

return graph;

}int

bfs(

int x,lgraph graph)

q.pop();

vist[temp.v]=1

;struct vnode t = gt-

>g[temp.v]

;while

(t.firstnext)

t.firstnext=t.firstnext-

>next;}}

return cnt;

}

7 7 六度空間 (30 分)

題目鏈結 這個題用光蒐做,從網上看的,我一開始以為是深搜,寫半天沒寫出來。最後從網上看要用廣搜做,想了半天,還覺得應該用深搜,無奈的我回到我的床上,躺下吃了兩粒花生公尺,仔細思考了一下,就想出來廣搜怎麼做了!沉下心來,坐在電腦面前沒有躺在床上思考的更犀利。我記得以前也有乙個模擬鍊錶的題也是在床上臨睡...

7 7 六度空間 30分

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

7 7 六度空間 30分

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