Pagini recente » Cod sursa (job #1305973) | Cod sursa (job #1795488) | Cod sursa (job #804119) | Cod sursa (job #1504033) | Cod sursa (job #2472835)
#include <iostream>
#include <fstream>
using namespace std;
ifstream x("ctc.in");
ofstream y("ctc.out");
int i,j,n,m,k,a[102][102],b[102][102],viz[102],p[102],nr,nrc,vizi[102];
void citire()
{
for(k=1;k<=m;k++)
{
x>>i>>j;
a[i][0]++;
a[i][a[i][0]]=j;
b[j][0]++;
b[j][b[j][0]]=i;
}
}
void dfsb(int nod)
{
int k;
viz[nod]=0;///aici afisez daca se cer componentele;
vizi[nod]=nrc;
for(k=1;k<=b[nod][0];k++)
if(viz[b[nod][k]])
dfsb(b[nod][k]);
}
void dfsa(int nod)
{
int k;
viz[nod]=1;
for(k=1;k<=a[nod][0];k++)
if(viz[a[nod][k]]==0)
dfsa(a[nod][k]);
p[++nr]=nod;
}
int main()
{
x>>n>>m;
citire();
for(i=1;i<=n;i++)
if(viz[i]==0)
dfsa(i);
for(i=n;i>0;i--)
if(viz[p[i]])
{
nrc++;
dfsb(p[i]);
///cout<<'\n';
}
y<<nrc<<'\n';
for(i=1;i<=nrc;i++)
{
for(j=1;j<=n;j++)
if(vizi[j]==i)
y<<j<<" ";
y<<'\n';
}
x.close();
y.close();
return 0;
}