func_code_string: #include <bits/stdc++.h>   const int N = 1000005;   std::vector<int> e[N];   int a[N], n, m, x, y, r[N], c[N], id[N], cnt, cnt2, s[N], vis[N];   void dfs(int x) {     if (vis[x]) return;     vis[x] = 1;     for (auto u : e[x]) {       dfs(u);       a[x] |= a[u];     }   }   int main() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; i++) {       scanf( %d%d , &x, &y);       e[x].push_back(y);       r[y]++;       c[x]++;     }     for (int i = 1; i <= n; i++)       if (!c[i]) a[i] = 1 << cnt, id[i] = cnt++;     for (int i = 1; i <= n; i++)       if (!r[i]) {         dfs(i);         s[cnt2++] = a[i];       }     for (int i = 1; i < (1 << cnt) - 1; i++) {       int t = 0, S = 0, t2 = 0;       for (int j = 0; j < cnt; j++)         if (i & (1 << j)) t++, S |= s[j];       for (int j = 0; j < cnt; j++)         if (S & (1 << j)) t2++;       if (t2 <= t) {         puts( NO );         return 0;       }     }     puts( YES );     return 0;   }   