编程题
### 问题描述
你正在分析一个大型社交网络,这个社交网络由多个不相连的连通块组成。在每一个连通块里,从任意一个节点(人)出发,都能通过一系列朋友关系(边)到达任意另一个节点。现在有 $m$ 位新的朋友加入了这个社交网络,并与其中某些人建立了朋友关系。
你的任务是判断:加入这 $m$ 位新的朋友后,是否所有的连通块能合并成一个单一的连通块。
### 输入格式
第一行包含两个整数 $n$ 和 $e$,分别表示原有的节点数量和边的数量。
接下来的 $e$ 行,每行包含两个整数 $a$ 和 $b$,表示节点 $a$ 和节点 $b$ 之间有一条边。这 $e$ 行描述了初始的多个连通块。
接着一行包含一个整数 $m$,表示有 $m$ 位新的朋友加入。
最后 $m$ 行,每行包含两个整数 $x$ 和 $y$,表示新加入的朋友连接了原有网络中的人 $x$ 和 $y$。
### 输出格式
输出一个单词:如果所有的连通块能合并成一个单一的连通块,输出 " $YES$ "(不包括引号);否则,输出 " $NO$ "(不包括引号)。
### 样例输入
```
5 2
1 2
4 5
2
3 4
2 5
```
### 样例输出
```
YES
```
### 评测数据范围
$ 1 \leq n \leq 10^5 $,$ 0 \leq e \leq 10^5 $,$ 0 \leq m \leq 10^5 $,$ 1 \leq a, b, x, y \leq 10^5 $,$ a \neq b $, $ x \neq y $。