func_code_string: #include <bits/stdc++.h>   const double PI = acos(-1.0);   const int maxn = 1e6;   const int INF = 0x3f3f3f;   const long long linf = 0x3f3f3f3f3f3f3f3f;   const int mod = 1e9 + 7;   using namespace std;   struct node {     int a, b, color;   } edge[maxn];   int n, m, ans;   int vis[maxn];   vector<int> v[maxn];   void dfs(int x, int fa) {     if (vis[x]) {       if (x == fa) ans = 2;       return;     }     vis[x] = 1;     for (int i = 0; i < v[x].size(); i++) dfs(v[x][i], fa);   }   int main() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; i++) {       int a, b;       scanf( %d%d , &a, &b);       edge[i].a = a;       edge[i].b = b;       edge[i].color = 1;       v[a].push_back(b);     }     ans = 1;     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) vis[j] = 0;       dfs(i, i);     }     cout << ans << endl;     if (ans == 1) {       for (int i = 0; i < m; i++) cout << 1 <<    ;       cout << endl;     } else {       for (int i = 1; i <= m; i++) {         if (edge[i].a < edge[i].b) edge[i].color = 2;       }       for (int i = 1; i <= m; i++) cout << edge[i].color <<    ;       cout << endl;     }     return 0;   }   