#1699. 按序整理书籍
按序整理书籍
题目背景
小铃需要整理一批珍贵古籍,这些古籍的整理有严格的先后依赖规则:比如必须先整理序言卷,再整理正文卷,最后整理注解卷;必须先修复虫蛀的书页,再进行装订。小铃想知道,按照这些规则,是否能把所有古籍都整理完成。
题目描述
给定 n 个整理任务(编号 1~n)和 m 条先后依赖规则,每条规则形如 a b,表示必须先完成任务 a,才能开始任务 b。请判断是否存在一个合法的任务执行顺序,能完成所有 n 个任务(即不存在循环依赖,且所有任务都能被执行)。若能完成输出 YES,否则输出 NO。
输入格式
第一行包含两个整数 n 和 m(1 ≤ n ≤ 20,1 ≤ m ≤ 50),分别表示任务数量和依赖规则数量。接下来 m 行,每行两个整数 a 和 b(1 ≤ a, b ≤ n,a ≠ b),表示先完成 a 才能完成 b。保证输入中不会出现重复的依赖规则。
输出格式
输出一行,若能完成所有任务则输出 YES,否则输出 NO。
样例
4 3
1 2
2 3
3 4
YES
样例解释
任务顺序可以是 1→2→3→4,所有依赖规则都满足,能完成全部任务,因此输出 YES。