#include <bits/stdc++.h>
using namespace std;
int const MAXV = 10000;
int vertex, edge;
int visited[MAXV] = {0};
int graph[MAXV][MAXV];
int BFS(int vertex);
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt", "r", stdin);
#endif
cin >> vertex >> edge;
int a, b;
for(int i = 0; i < edge; i++){
cin >> a >> b;
graph[a][b] = graph[b][a] = 1;
}
for(int i = 1; i <= vertex; i++){
int cnt = BFS(i);
memset(visited, 0, sizeof(visited));
double f = 100.0 * cnt / vertex;
printf("%d: %.02f%%\n", i, f);
}
return 0;
}
int BFS(int vertex)
{
queue<int> q;
int tmp, level = 0, tail, last = vertex, cnt = 1;
q.push(vertex);
visited[vertex] = 1;
while(!q.empty()){
tmp = q.front();
// cout << "nVal: " << tmp << endl;
q.pop();
for(int i = 1; i <= ::vertex; i++){
if(graph[tmp][i] && visited[i] == 0){
cnt++;
tail = i;
visited[i] = 1;
q.push(i);
}
}
if(tmp == last){
level++;
last = tail;
}
if(level == 6) break;
}
return cnt;
}
中國大學MOOC-陳越、何欽銘-數據結構-2018秋 06-圖3 六度空間 (30 分)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.