#YHCSPJMN150004. 道路规划

道路规划

道路规划

题目背景

在育华学校的战略模拟课上,T2之王遇到了一个关于战场据点道路规划的挑战。需要将所有双向道路改为单向道路,既要避免形成环(确保总司令不迷路),又要满足每个据点出度的区间约束。

题目描述

战场上有 n n 个据点(编号1~n),初始时每两个据点之间都有一条双向道路。需完成以下改造与约束满足:

  1. 道路单向化:将所有双向道路改为单向道路,改造后的有向图不能包含环(即图需为DAG,有向无环图);
  2. 出度约束:第 i i 个据点的出度(从该点出发的单向道路数量)必须在区间 [li,ri][l_i, r_i] 内(0liri<n 0 \leq l_i \leq r_i < n )。

需判断是否存在满足上述两个条件的道路改造方案。题目包含多组测试数据。

输入格式

  1. 第一行:整数 T T ,表示测试数据组数;
  2. 对于每组数据:
    • 第一行:整数 n n ,表示据点数量;
    • 第二行:n n 个整数 l1,l2,,ln l_1, l_2, \dots, l_n ,表示每个据点出度的下限;
    • 第三行:n n 个整数 r1,r2,,rn r_1, r_2, \dots, r_n ,表示每个据点出度的上限。

输出格式

对每组测试数据,输出一行字符串:

  • 若存在合法改造方案,输出 YES
  • 若不存在,输出 NO

样例

样例输入 1

2
5
0 1 4 0 0
3 4 4 1 3
3
1 2 2
2 2 2

样例输出 1

YES
NO

样例解释 1

第一组数据(5个据点)

  • 出度约束:据点1([0,3])、据点2([1,4])、据点3([4,4])、据点4([0,1])、据点5([0,3]);
  • 可行方案:通过对据点进行拓扑排序(如按3→2→1→5→4的顺序),将道路方向设为“靠前节点指向靠后节点”,可满足出度约束(例如据点3需出度4,指向所有其他4个据点;据点2出度3,指向1、5、4等),且无环,故输出 YES

第二组数据(3个据点)

  • 出度约束:据点1([1,2])、据点2([2,2])、据点3([2,2]);
  • 矛盾点:3个据点总出度需满足 1+2+2=5 1+2+2=5 ,但3个据点的完全图共有 3×2/2=3 3 \times 2 / 2 = 3 条道路(单向化后总出度为3),5>3,无法满足,故输出 NO

数据规模与测试点(共20个测试点,育华学校专项)

测试点编号 n n \leq 特殊条件 考查目标
#1~#2 10
#3~#4
#5~#6 1000
#7~#8
#9~#10 10⁵ 所有 li=i1 l_i = i-1 (按编号排序后出度恰好为 i1 i-1
#11~#12 所有 limin(i,n1) l_i \geq \min(i, n-1) (需优先满足下限)
#13~#14 li=0 l_i = 0 (部分据点无出度)
#15~#16 ri=n1 r_i = n-1 (部分据点出度上限为最大值)
#17~#18
#19~#20

:所有测试点均满足 1T10 1 \leq T \leq 10 0liri<n 0 \leq l_i \leq r_i < n ;核心约束包括“总出度必须为 n(n1)/2 n(n-1)/2 ”“排序后第 k k 个节点出度需在 [lk,rk][0,nk][l'_k, r'_k] \cap [0, n-k] 内”(lk,rk l'_k, r'_k 为排序后的出度上下限)。