Pagini recente » Cod sursa (job #442035) | Cod sursa (job #1118174)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ctc.in");
ofstream g("ctc.out");
int n,m,b[101][101];
bool a[101][101];
bool viz[101];
void citire(void)
{
int i,j,k;
f>>n>>m;
for(k=1;k<=m;k++)
{
f>>i>>j;
a[i][j]=1;
}
}
void adancime(int i,int k)
{
int j;
viz[i]=1;
b[k][i]=i;
for(j=1;j<=n;j++)
if(a[i][j]==1&&viz[j]==0)
adancime(j,k);
}
void resviz()
{
int k;
for(k=1;k<=n;k++)
viz[k]=0;
}
void parcurgeri(void)
{
int l;
for(l=1;l<=n;l++)
{
resviz();
adancime(l,l);
}
}
void comptare(void)
{
int i,j;
int linie[101],nr=0,ok,okk=0;
resviz();
while(okk==0)
{
okk=1;
i=1;
nr=0;
while(viz[i]!=0)
i++;
g<<i<<" ";
linie[1]=i;
viz[i]=1;
nr++;
for(i=2;i<=n;i++)
{
ok=1;
for(j=1;j<=nr;j++)
{
if(b[i][linie[j]]==0)
ok=0;
if(b[linie[j]][i]==0)
ok=0;
}
if(ok==1)
{
if(viz[i]==0)
{
g<<i<<" ";
nr++;
linie[nr]=i;
viz[i]=1;
}
}
}
g<<"\n";
for(i=1;i<=n;i++)
if(viz[i]==0)
okk=0;
}
}
int main()
{
citire();
g<<3;
parcurgeri();
comptare();
return 0;
}