Pagini recente » Cod sursa (job #3183432) | Cod sursa (job #1244033) | Cod sursa (job #1258221) | Cod sursa (job #3185767) | Cod sursa (job #1249746)
#include <fstream>
#define NMAX 5001
using namespace std;
ifstream fin("ctc.in");
ofstream fout("ctc.out");
int n,m;
int parcurs[NMAX],D[NMAX][NMAX],A[NMAX][NMAX];
void citire();
void afisare();
void DFS(int k);
void mdrumuri();
void first_idea(int x);
int main()
{
citire();
mdrumuri();
int i;
for(i=1;i<=n;i++)
{
if(!parcurs[i])
{
fout<<i<<" ";
first_idea(i);
fout<<"\n";
}
}
return 0;
}
void citire()
{
int x,y,i;
fin>>n>>m;
for(i=0;i<m;i++)
{
fin>>x>>y;
A[x][y]=D[x][y]=1;
D[i][i]=1;
}
}
void DFS(int k,int lg)
{
parcurs[k]=1;
for(int i=1;i<=n;i++)
{
if(!parcurs[i]&&A[k][i])
{
DFS(i,lg+1);
}
}
}
void first_idea(int x)
{
int i,j;
parcurs[x]=1;
for(i=1;i<=n;i++)
if(x!=i)
if(!parcurs[i]&&(D[x][i]&&D[i][x]))
{
parcurs[i]=1;
fout<<i<<" ";
}
}
void mdrumuri()
{
int i,j,k;
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(!D[i][j])
D[i][j]=D[i][k]&&D[k][j];
}