题目描述:给定图g里所有节点V={vi,i=1,2,...,n},以及节点之间的关联E={{vi,vj}...},假设所有有关联关系的节点能连在一起成为一个独立子图,求g中所有独立子图的数量。
样例:输入V = ['v1','v2','v3','v4'],E = [['v1','v2'],['v3','v4']],输出2。
思路:图的深度优先遍历
def dfs(source):
global visited, E
stack = [source]
while stack:
current = stack.pop(0)
if not visited[current]:
visited[current] = True
for relation in E:
if current in relation:
if relation[0] == current and not visited[relation[1]]:
stack.append(relation[1])
elif relation[1] == current and not visited[relation[0]]:
stack.append(relation[0])
V = ['v1','v2','v3','v4']
#E = [['v1','v2'],['v3','v4'],['v1','v3']]
E = [['v1','v2'],['v3','v4']]
visited = {}
for k in V:
visited[k] = False
count = 0
for k in V:
if not visited[k]:
count += 1
dfs(k)
print(count)