小A参加了一个n人的活动,每个人都有一个唯一编号i(i>=0 & i<n),其中m对相互认识,在活动中两个人可以通过互相都认识的一个人介绍认识。现在问活动结束后,小A最多会认识多少人?
小A参加了一个n人的活动,每个人都有一个唯一编号i(i>=0 & i<n),其中m对相互认识,在活动中两个人可以通过互相都认识的一个人介绍认识。现在问活动结束后,小A最多会认识多少人?
第一行聚会的人数:n(n>=3 & n<10000);
第二行小A的编号: ai(ai >= 0 & ai < n);
第三互相认识的数目: m(m>=1 & m
< n(n-1)/2);
第4到m+3行为互相认识的对,以','分割的编号。
输出小A最多会新认识的多少人?
7 5 6 1,0 3,1 4,1 5,3 6,1 6,5
3
class Node(object):
def __init__(self, v):
self.v = v
self.neighbors = []
def solve(graph, target):
counter = 0
n = len(graph)
visited = [False for _ in range(n)]
stack = [target]
visited[target] = True
while stack:
v = stack.pop()
for i in graph[v].neighbors:
if not visited[i]:
visited[i] = True
counter += 1
stack.append(i)
return counter
while True:
try:
num_person = int(input().strip())
target = int(input().strip())
graph = [Node(i) for i in range(num_person)]
num_edge = int(input().strip())
for _ in range(num_edge):
li = input().strip().split(',')
i, j = [int(_) for _ in li]
graph[i].neighbors.append(j)
graph[j].neighbors.append(i)
ans = 0
nei_num = len(graph[target].neighbors)
if nei_num:
ans = solve(graph, target) - nei_num
print(ans)
except Exception as e:
#print(e)
break
from collections import deque # 双向队列,速度比list更快一些
n = int(input())
ai = int(input())
m = int(input()) # 用整型而不是字符串,能省一点是一点
relationships = {} # 用dict来模拟链表
for i in range(n):
relationships[i] = []
for _ in range(m):
member1, member2 = list(map(int, input().split(',')))
relationships[member1].append(member2)
relationships[member2].append(member1) # 双向关系
visited = [False]*n # 列表记录成员是否被访问过
visited[ai] = True
for member in relationships[ai]:
visited[member] = True
queue = deque(relationships[ai])
count = 0
while queue:
node = queue.popleft()
for node_next in relationships[node]:
if not visited[node_next]:
queue.append(node_next)
visited[node_next] = True
count += 1
print(count) dict存储图的边信息,每个key对应一个list visited标记是否访问过。 #deque pop(0)速度要更快一点
from collections import deque
N = int(input())
cur_id = int(input())
M = int(input())
graph_link_dict = {}
for i in range(N):
graph_link_dict[i] = []
for _ in range(M):
node1,node2 = list(map(int,input().split(',')))
graph_link_dict[node1].append(node2)
graph_link_dict[node2].append(node1)
visited = [False]*N
new_set = set()
queue = deque()
for node in graph_link_dict[cur_id]:
queue.append(node)
#BFS
while queue:
node = queue.popleft()
if visited[node]:
continue
for to_node in graph_link_dict[node]:
if to_node != cur_id:
queue.append(to_node)
visited[node] = True
new_set.add(node)
print(len(new_set)-len(graph_link_dict[cur_id]))
n,a,m = map(int, (input(),input(),input()))
c = dict([i,[]] for i in range(n))
for i in range(m):
x,y = map(int,input().split(','))
c[x].append(y)
c[y].append(x)
o = set(c[a])
p = set()
def f(x):
if x not in p:
t = len(p)
p.add(x)
if len(p) != t:
for i in c[x]:
f(i)
f(a)
print(len(p)-1-len(o))