“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。
#include <iostream>
#include <iomanip>
#define MAXSIZE 100
#define INFINITE 36577
using namespace std;
void CreateUDG(int G[][MAXSIZE], int m, int n)
{//使用连接短速度阵列的方法创建
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
G[i][j]=INFINITE; //原始区域中各个时间段的授权值太长,是否将设备存储在行中的单个点
int a, b;
for (int i=0;i<m;i++) { //存储位置被视为封闭组件。存储位置的测试值为负1,存储位置被看作封闭组件
cin>>a>>b;
G[a-1][b-1]=1;
G[b-1][a-1]=1;
}
}
int FindMinPath(bool S[], int D[], int n)
{//选择其中一个条件的当前最短期限,终点为n
int min=INFINITE;
int index=-1;
for (int i=0;i<n;i++) {
if (!S[i]&&D[i]<min) {
min=D[i];
index=i;
}
}
return index;
}
float SixDegree_DIJ(int G[][MAXSIZE], int n, int start)
{//通过这个“新的开始”,我们可以计算法律系统中六个空时间点的数量,而开始是交换机指定时间点的第一级
/**************begin************/
/**************end************/
}
int main()
{
int n,m;
while (true) {
cin>>n>>m;
if (n==0&&m==0) break;
int G[MAXSIZE][MAXSIZE]={ 0 };
CreateUDG(G,m,n);
for (int i=0;i<n;i++) { //首次验证n年的中央时间管理后
cout<<i+1<<": "<<fixed<<setprecision(2)<<SixDegree_DIJ(G,n,i)*100<<"%"<<endl;
}
}
return 0;
}