### 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) == 0
```

### Time complexity

O(V+E)

### Space complexity

O(V)