Pagini recente » Cod sursa (job #2857390) | Cod sursa (job #1250699) | Cod sursa (job #22006) | Cod sursa (job #426893) | Cod sursa (job #1073200)
#include <fstream>
#define NMAX 101
using namespace std;
ifstream fin("ctc.in");
ofstream fout("ctc.out");
int n,m,a[NMAX][NMAX],uz[NMAX],nr,c[NMAX],sol[2*NMAX],k,prec[NMAX];
void citire();
void DFS(int x);
void BFS(int x);
void drumuri();
int main()
{
citire();
drumuri();
for (int i=1; i<=n; i++)
{
if (!uz[i])
{
nr++;
for (int j=1; j<=n; j++)
{
if (a[i][j] && a[j][i])
uz[j]=nr;
}
// uz[i]=nr;
}
}
fout<<nr<<'\n';
for (int i=1; i<=nr; i++)
{
for (int j=1; j<=n; j++) if (uz[j]==i) fout<<j<<' ';
fout<<'\n';
}
return 0;
}
void citire()
{
int ei,ef;
fin>>n>>m;
for (int i=0; i<m; i++)
{
fin>>ei>>ef;
a[ei][ef]=1;
//a[ef][ei]=1;
}
for (int i=1; i<=n; i++) a[i][i]=1;
}
void drumuri()
{
for (int k=1; k<=n; k++)
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
if (a[i][k] && a[k][j]) a[i][j]=1;
}