func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> g[2000];   int vis[2000];   vector<pair<int, int> > cyc;   void dfs(int x, int scc) {     if (vis[x] > 0) {       return;     }     vis[x] = 1;     int j;     for (int i = 0; i < g[x].size(); i++) {       for (j = 0; j < g[g[x][i]].size(); j++) {         if (g[g[x][i]][j] == x) {           g[g[x][i]].erase(g[g[x][i]].begin() + j);         }       }       if (vis[g[x][i]] > 0) {         cyc.push_back(make_pair(x, g[x][i]));       }       dfs(g[x][i], scc);     }     return;   }   int main() {     int n, i, j, x, y, t, u;     cin >> n;     for (i = 0; i < n - 1; i++) {       cin >> x >> y;       x--;       y--;       g[x].push_back(y);       g[y].push_back(x);     }     memset(vis, 0, sizeof(vis));     int scc = 0, days = 0;     cyc.clear();     vector<int> store;     store.clear();     for (i = 0; i < n; i++) {       if (vis[i] == 0) {         scc++;         store.push_back(i);         dfs(i, scc);       }     }     if (scc == 1) {       cout <<  0 n ;       return 0;     }     j = 1;     vector<pair<pair<int, int>, pair<int, int> > > v;     v.clear();     for (i = 0; i < cyc.size(); i++) {       v.push_back(make_pair(make_pair(cyc[i].first + 1, cyc[i].second + 1),                             make_pair(store[j - 1] + 1, store[j] + 1)));       j++;     }     cout << v.size() <<   n ;     for (i = 0; i < v.size(); i++) {       cout << v[i].first.first <<     << v[i].first.second <<                << v[i].second.first <<     << v[i].second.second <<   n ;     }     return 0;   }   