PTA 六度空間 BFS

2021-10-07 02:02:16 字數 1663 閱讀 1531

描述

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

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

輸入格式

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

10​3​

​,表示

人數

)n(1n(

110​3

​​,表

示人數)

、邊數m(≤

33×n,

表示社交

關係數)

m(≤33×n,表示社交關係數)

m(≤33×

n,表示

社交關係

數)。隨後的m行對應m條邊,每行給出一對正整數,分別是該條邊直接連通的兩個結點的編號(節點從1到n

nn編號)。

輸出格式

對每個結點輸出與該結點距離不超過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%

題意

題解

通過此題了解圖的vector儲存和bfs案例,主要的難點是怎麼分辨層數

**

#include

using

namespace std;

typedef

long

long ll;

const ll maxn =

2e6+7;

struct edge };

vector e[

1500];

//利用vector動態陣列儲存

void

init

(int n)

}int

bfs(vector x,

int node)}if

(u == last)

if(level ==6)

break

;//當層級超過6時退出迴圈,返回搜尋到的節點

}return cnt;

}int

main()

for(

int i =

1; i <= n;

++i)

return0;

}

7 7 六度空間 30分 BFS

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

7 7 六度空間

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

7 1 六度空間

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