六度空间输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤10 3 ,表示人数)、边数M(≤33×N,表示社交关系数)。随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个结点的编号(节点从1到N编号)。 输出格式: 对每个结点输出与该结点距离不超过6的结点数占结点总数的百分比,精确到小数点后2位。每个结节点输出一行,格式为“结点编号:(空格)百分比%”。
时间: 2024-03-26 14:35:18 浏览: 107
这道题可以使用广度优先搜索来求解。具体步骤如下:
1. 对于每个结点,从该结点开始进行广度优先搜索,记录每个距离不超过6的结点
2. 统计每个结点距离不超过6的结点数,计算占结点总数的百分比
以下是示例代码实现:
```python
from collections import deque
# 广度优先搜索函数
def bfs(graph, start):
visited = [False] * len(graph)
visited[start] = True
distance = [0] * len(graph)
count = 0 # 统计距离不超过6的结点数
q = deque([(start, 0)])
while q:
node, dist = q.popleft()
if dist > 6:
break
count += 1
for neighbor in graph[node]:
if not visited[neighbor]:
visited[neighbor] = True
distance[neighbor] = dist + 1
q.append((neighbor, dist + 1))
return count
# 读取输入
n, m = map(int, input().split())
graph = [[] for _ in range(n)]
for i in range(m):
u, v = map(int, input().split())
graph[u - 1].append(v - 1)
graph[v - 1].append(u - 1)
# 计算每个结点的距离不超过6的结点数
for i in range(n):
count = bfs(graph, i)
percent = count / n * 100
print("%d: %.2f%%" % (i + 1, percent))
```
希望能够帮助到你!
阅读全文