Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<vector<int> > a;
- int n, m, cnt(0), res;
- bool visit[1001];
- vector<int> b;
- deque<int> s;
- void DFS(int u)
- {
- visit[u]=true;
- s.push_back(u);
- for(int i=0;i<a[u].size();i++)
- {
- int v=a[u][i];
- if(!visit[v])
- {
- DFS(v);
- low[u]=min(low[u],low[v]);
- }
- else{
- low[u]=min(low[u],id[v]);
- if(find(s.begin(),s.end(),v) != s.end())
- {
- vector<int> c;
- while(true)
- {
- int x = s.back();
- c.push_back(x);
- if(x == v) break;
- s.pop_back();
- }
- if(c.size() > b.size()) b = c;
- }
- }
- }
- }
- void enter(){
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- freopen("GIANGHO.INP","r",stdin);
- freopen("GIANGHO.OUT","w",stdout);
- cin>>n;
- a.resize(n+1);
- int x,y;
- while(cin>>x>>y)
- a[x].push_back(y);
- }
- int main()
- {
- enter();
- for(int i=1;i<=n;i++)
- if(!visit[i])
- DFS(i);
- cout<<b.size()<<endl;
- for(x : b) cout<<x<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement