#1439. 构造有向图

构造有向图

构造有向图

题目描述

你需要构造一个nn个点的有向图,满足两类要求(第一类要求有mm条,第二类要求有tt条):

  1. 从点aa通过一条或多条边可以到达点bb
  2. 从点aa通过一条或多条边不能到达点bb

同时,你需要保证构造的图的边数p100000p \leq 100000

输入格式

第一行一个整数nn

第二行一个整数mm,表示第一类要求的个数,接下来mm行每行两个整数aabb

m+3m+3行一个整数tt,表示第二类要求的个数,接下来tt行每行两个整数aabb

输出格式

若不存在这样的图,输出一行NONO

反之,第一行输出YESYES,第二行输出该图的边数pp,接下来pp行每行两个整数uuvv,表示该图中有uvu \to v的一条有向边。

数据范围与提示

本题采用子任务捆绑测试。对于每个子任务,你只有通过了这个子任务的所有测试点,才能获得这个子任务的分数。

  • 子任务112020分):nnmmt100t \leq 100
  • 子任务224040分):nnmmt25000t \leq 25000
  • 子任务334040分):nnmmt105t \leq 10^{5}

对于100%100\%的数据,1n1 \leq nmmt105t \leq 10^{5}1a1 \leq abnb \leq naba \neq b

样例

3
2
1 2
2 3
1
1 3
NO
3
2
1 2
2 3
1
3 1
YES
2
1 2
2 3