intSDS(int i) { int cnt = 0; int level = 0, last = i, tail = -1; queue<int> q; visited[i] = true; q.push(i); cnt++; while (!q.empty()) { int k = q.front(); q.pop(); for (int j = 1; j <= n; j++) { if (j == k) continue; if (!visited[j] && G[k][j]) { q.push(j); tail = j; visited[j] = true; cnt++; } } if (k == last) { level++; last = tail; } if (level == 6) break; } return cnt; }
intmain() { cin >> n >> m; while (m--) { int a, b; scanf("%d%d", &a, &b); G[a][b] = 1; G[b][a] = 1; } for (int i = 1; i <= n; i++) { int ret = SDS(i); printf("%d: %.2f", i, (double)ret / n * 100); puts("%"); memset(visited, false, sizeof(visited)); } return0; }