「考える問題は簡単ですか」

Programming Detect

You are given a directed graph G with N nodes and M edges. Each node has an operation, which could be "def sth" or "use sth".

An array of nodes A is called Exceptional iff:
- for each there is an edge connecting and
- There exists some string S so that the use operation comes earlier than the first def operation of string S.

For example,def i;use i;def j;use j;def j;use j;use i; meets the second condition.
use i;def i;use i;def i is bad because ths usage of i comes earlier than its declaration.

Your task is to find if the given graph contains an Exceptional path.

example

Input
Graph={1->2,2->3,3->1,2->2}
Operation={"def x","def y","use x"}
Output
NO

Input
Graph={1->2,1->3,2->3}
Operation={"def x","def y","use y"}
Output
YES
Explain
When A=[1,3] "y" is used without declaration.

Constriants

Subtask 1(9.999999999999999999999%): the operation of each node could only be "def var" and "use var"."var" is a constant but not a varible.
Subtask 2(20%): the graph is a directed tree.
Subtask 3(30%): it is made sure that for each i, node i and i+1 are connected.
Subtask 4(20%): the graph is a forest
Subtask 5(20%): N,M<=1000
For all, N,M<=10^5