Pagini recente » Cod sursa (job #2077516) | Cod sursa (job #2240424) | Cod sursa (job #1168875) | Cod sursa (job #1436265) | Cod sursa (job #2679851)
#include <bits/stdc++.h>
using namespace std;
#define pi push_back
ifstream in("ctc.in");
ofstream o("ctc.out");
const int NMAX=100005;
int vi[NMAX];
vector<int>v[NMAX],g[NMAX],sol;
vector<vector<int>>gg;
int n,m,a,b,i;
void d(int nod,auto &ad,int ok){
vi[nod]=1;
if(!ok)gg.back().pi(nod);
for(int x:ad[nod])
if(!vi[x])d(x,ad,ok);
if(ok)sol.pi(nod);
}
int main(){
in>>n>>m;
while(m--)
in>>a>>b,v[a].pi(b),g[b].pi(a);
for(i=1;i<=n;i++)
if(!vi[i])d(i,v,1);
memset(vi,0,sizeof(vi));
for(i=sol.size()-1;i>=0;i--)
if(!vi[sol[i]])
gg.pi(vector<int>()),d(sol[i],g,0);
o<<gg.size()<<'\n';
for(auto x:gg){
for(int y:x)
o<<y<<" ";
o<<'\n';
}
}