Pagini recente » Cod sursa (job #2420426) | Cod sursa (job #2321515) | Statistici Dilirici Radu (diliriciradu) | Cod sursa (job #2967264) | Cod sursa (job #2565785)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ctc.in");
ofstream out("ctc.out");
int a[100001][100001], n, v1[100001], v2[100001], c[100001], m, nrc;
void df1(int x)
{
v1[x]=1;
for(int i=1; i<=n; i++)
if(v1[i]==0 && a[x][i]==1)
df1(i);
}
void df2(int x)
{
v2[x]=1;
for(int i=1; i<=n; i++)
if(v2[i]==0 && a[i][x]==1)
df2(i);
}
int main()
{
in>>n;
in>>m;
int x,y;
while(in>>x>>y)
{
a[x][y]=1;
}
for(int i=1; i<=n; i++)
{
if(c[i]==0)
{
for(int j=1; j<=n; j++)
{
v1[j]=v2[j]=0;
}
nrc++;
df1(i);
df2(i);
for(int j=1; j<=n; j++)
if(v1[j]==1 && v2[j]==1)
c[j]=nrc;
}
}
int k=1;
out<<nrc<<'\n';
while(k<=nrc)
{
for(int i=1; i<=n; i++)
{
if(c[i]==k)
out<<i<<' ';
}
k++;
out<<'\n';
}
in.close();
return 0;
}