Problem statement
You are given n people represented as an integer from 0 to n - 1, and a list of friends tuples, where person friends[i][0] and person friends[i][1] are friends.
Return whether everyone has at least one friend.
Intuition
Treat each person as an entry in a set. As we traverse the friends array remove elements from set that have friends. Return true if set is empty.
We initialize nodes as a set of n elements from [0, n)
For each friendship p1, p2 remove both p1 and p2 from the nodes set.
class Solution:
    def solve(self, n, friends):
        nodes = set([i for i in range(n)])
        for p1, p2 in friends:
            if p1 in nodes:
                nodes.remove(p1)
            if p2 in nodes:
                nodes.remove(p2)
        return len(nodes) == 0Time complexity
O(V+E)
Space complexity
O(V)