Pagini recente » Cod sursa (job #1660347) | Cod sursa (job #1019106) | Cod sursa (job #2811889) | Cod sursa (job #2568921) | Cod sursa (job #1699485)
/*
*/
#include<iostream>
#include<fstream>
using namespace std;
int n,g[102][102],m,pred[102],succ[102],k,nrc;
ifstream fin("ctc.in");
ofstream fout("ctc.out");
void citire()
{
fin>>n>>m;
int x,y;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
g[x][y]=1;
}
}
void df_succ(int nod)
{
succ[nod]=nrc;
for(int i=1;i<=n;i++)
if(g[nod][i]==1&&!succ[i])
df_succ(i);
}
void df_pred(int nod)
{
pred[nod]=nrc;
for(int i=1;i<=n;i++)
if(g[i][nod]==1&&!pred[i])
df_pred(i);
}
int main()
{
citire();
int i,j;
nrc=1;
for(i=1;i<=n;i++)
if(!succ[i])
{
succ[i]=nrc;
df_succ(i);
df_pred(i);
for(j=1;j<=n;j++)
if(succ[j]!=pred[j])
succ[j]=pred[j]=0;
nrc++;
}
fout<<nrc<<"\n";
for(i=1;i<nrc;i++)
{
for(j=1;j<=n;j++)
if(succ[j]==i)
fout<<j<<" ";
fout<<"\n";
}
return 0;
}