日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7-7 六度空间(30 分)

發布時間:2025/3/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-7 六度空间(30 分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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


圖1 六度空間示意圖

“六度空間”理論雖然得到廣泛的認同,并且正在得到越來越多的應用。但是數十年來,試圖驗證這個理論始終是許多社會學家努力追求的目標。然而由于歷史的原因,這樣的研究具有太大的局限性和困難。隨著當代人的聯絡主要依賴于電話、短信、微信以及因特網上即時通信等工具,能夠體現社交網絡關系的一手數據已經逐漸使得“六度空間”理論的驗證成為可能。

假如給你一個社交網絡圖,請你對每個節點計算符合“六度空間”理論的結點占結點總數的百分比。

輸入格式:

輸入第1行給出兩個正整數,分別表示社交網絡圖的結點數N(1,表示人數)、邊數M(≤,表示社交關系數)。隨后的M行對應M條邊,每行給出一對正整數,分別是該條邊直接連通的兩個結點的編號(節點從1到N編號)。

輸出格式:

對每個結點輸出與該結點距離不超過6的結點數占結點總數的百分比,精確到小數點后2位。每個結節點輸出一行,格式為“結點編號:(空格)百分比%”。

輸入樣例:

10 9 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 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.對每個結點使用廣度優先搜索距離小于6的結點,并統計個數
2.使用層數(level)來表示距離,其中本結點為第0層,距離1的結點為第1層…


1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define MAXVEX 10005 5 6 void CreateGraph( ); 7 int BFSTraverse(int i); 8 9 int G[MAXVEX][MAXVEX],Nv,Ne; 10 int visited[MAXVEX]; 11 12 int main() 13 { 14 int i,j; 15 int count; 16 double b; 17 CreateGraph(); 18 for( i=1; i<=Nv; i++) 19 { 20 count = BFSTraverse(i); 21 b = 100.0*count/Nv; 22 printf("%d: %.2f%%\n",i,b); 23 } 24 25 return 0; 26 } 27 28 void CreateGraph() 29 { 30 //用鄰接矩陣表示圖 31 int i,j; 32 int v1,v2; 33 scanf("%d %d",&Nv,&Ne); 34 for( i=0; i<=Nv; i++) 35 { 36 for( j=0; j<=Nv; j++) 37 { 38 G[i][j] = 0; //初始化 39 } 40 } 41 for( i=0; i<Ne; i++) //注意這里是讀入邊 42 { 43 scanf("%d %d",&v1,&v2); 44 G[v1][v2] = 1; 45 G[v2][v1]= G[v1][v2]; //無向圖對稱 46 } 47 } 48 49 int BFSTraverse( int i) 50 { 51 int q[MAXVEX]= {0}; //用數組表示隊列 52 int rear=-1,front=-1; 53 int j; 54 int temp; 55 int cnt ; 56 57 int level; //當前結點所在的層數 58 int last; //該層的最后一個結點 59 int tail; //最后一個進入隊列的結點 60 61 for( j=0; j<=Nv; j++) 62 { 63 visited[j] = 0; 64 } 65 66 visited[i] =1; 67 cnt = 1; 68 level = 0; //本結點不算在層數里 69 last = i; 70 q[++rear] = i; //入隊 71 while( front<rear ) //判斷隊列是否為空 72 { 73 temp =q[++front]; //出隊 74 75 for( j=1; j<=Nv; j++) 76 { 77 if( G[temp][j] && !visited[j]) 78 { 79 visited[j] = 1; 80 q[++rear] = j; 81 cnt ++; 82 tail = j; 83 } 84 } 85 if( temp==last) 86 { 87 level ++; 88 last = tail; 89 } 90 if( level==6 ) 91 { 92 break; 93 } 94 } 95 96 97 return cnt; 98 }

?

?







轉載于:https://www.cnblogs.com/yuxiaoba/p/8337063.html

總結

以上是生活随笔為你收集整理的7-7 六度空间(30 分)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。