Pagini recente » Cod sursa (job #2882472) | Cod sursa (job #165597) | Cod sursa (job #1794291) | Cod sursa (job #2445597) | Cod sursa (job #1958374)
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int u,p,l=0,viz[100000]={},s,k,i,j,q,n,m,ok,coada[100000];
long a[100][100]={};
fstream f("ctc.in",ios::in);
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>p>>q;
a[p][q]=1;
}
f.close();
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if((i!=j)&&(a[i][j]==0))
{
a[i][j]=a[i][k]*a[k][j];
}
}
}
}
for(i=1;i<=n;i++)
{
if(viz[i]==0)
{
u=1;
p=1;
l++;
viz[i]=l;
coada[u]=i;
while(p<=u)
{
for(j=1;j<=n;j++)
{
if(viz[j]==0)
{
ok=1;
for(s=1;s<=u;s++)
{
if((a[j][coada[s]]==0)||(a[coada[s]][j]==0))
{
ok=0;
break;
}
}
if(ok==1)
{
u++;
coada[u]=j;
viz[j]=l;
}
}
}
p++;
}
}
}
fstream g("ctc.out",ios::out);
g<<l<<endl;
for(i=1;i<=l;i++)
{
for(j=1;j<=n;j++)
{
if(viz[j]==i)
{
g<<j<<" ";
}
}
g<<endl;
}
g.close();
}