func_code_string: #include <bits/stdc++.h>   using namespace std;   int i, n, m, ans, x, l, r, tot, a[1000005], b[1000005], last[1000005],       to[1000005], Next[1000005], q[1000005], y;   inline void add(int x, int y) {     Next[++tot] = last[x];     last[x] = tot;     to[tot] = y;   }   inline bool check(int x) {     for (int i = 1; i <= n; i++) a[i] = b[i];     a[x]--;     int rr = r, ll = l;     q[++r] = x;     while (l < r) {       int k = q[++l];       for (int i = last[k]; i; i = Next[i]) {         a[to[i]]--;         if (!a[to[i]]) q[++r] = to[i];       }     }     if (r == n) return true;     r = rr, l = ll;     return false;   }   int main() {     scanf( %d%d , &n, &m);     for (i = 1; i <= m; i++) scanf( %d%d , &x, &y), b[y]++, add(x, y);     for (i = 1; i <= n; i++)       if (b[i] == 0) q[++r] = i;     while (l < r) {       int k = q[++l];       for (int i = last[k]; i; i = Next[i]) {         b[to[i]]--;         if (!b[to[i]]) q[++r] = to[i];       }     }     if (r == n) return puts( YES ), 0;     for (i = 1; i <= n; i++) {       if (b[i] == 1) {         if (check(i)) return puts( YES ), 0;       }     }     puts( NO );   }   