Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def check_edge(a, b, components):
- for component in components:
- if a in component or b in component:
- component.add(a)
- component.add(b)
- return
- components.append({a, b})
- n, m = list(map(int, input().split()))
- components = []
- vertices_to_be_processed = {i for i in range(1, n + 1)}
- for i in range(0, m):
- a, b = list(map(int, input().split()))
- check_edge(a, b, components)
- vertices_to_be_processed.discard(a)
- vertices_to_be_processed.discard(b)
- for vertex in vertices_to_be_processed:
- components.append({vertex})
- flag = True
- while flag:
- flag = False
- l = len(components)
- i = 0
- while i < l - 1:
- if set.intersection(components[i], components[i+1]):
- l -= 1
- components[i] = set.union(components[i], components[i+1])
- del components[i+1]
- flag = True
- else:
- i += 1
- print(len(components))
- for component in components:
- print(len(component))
- print(*component)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement