Pagini recente » Cod sursa (job #2299318) | Cod sursa (job #971516) | Cod sursa (job #189591) | Cod sursa (job #2126153) | Cod sursa (job #2842673)
//#include <iostream>
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream cin ("ctc.in");
ofstream cout("ctc.out");
int n;
int ctc[NMAX];
int D[NMAX][NMAX];
int A[NMAX][NMAX];
void rw ();
void citire();
void afisare();
int nr;
int main()
{
int x, y;
citire();
rw();
for(x=1; x<=n; x++)
if(ctc[x]==0)
{
nr++;
for(y=1; y<=n; y++)
if(D[x][y] && D[y][x]) ctc[y]=nr;
}
cout<<nr<<'\n';
for(int i=1; i<=nr; i++, cout<<'\n')
for(int j=1; j<=n; j++)
if(ctc[j]==i) cout <<j<<' ';
return 0;
}
void rw ()
{
int x, y, z;
for(z=1; z<=n;z++)
for(x=1; x<=n;x++)
for(y=1; y<=n;y++)
{
if(D[x][z] && D[z][y]) D[x][y]=1;
}
}
void citire()
{
int i, x, y, m;
cin>>n>>m;
for(i=0; i<m;i++)
{
cin>>x>>y;
D[x][y]=A[x][y]=1;
}
}