Pagini recente » Cod sursa (job #252974) | Cod sursa (job #1447478)
#include <iostream>
#include <fstream>
int a[20][20],n,m,b[20][20],viz[20],viz1[20];
int val;
void dfs(int nod,int a[][20],int viz[])
{int k;
viz[nod]=val;
for(k=1;k<=n;k++)
if((a[nod][k]==1)&&(viz[k]==0))
dfs(k,a,viz);
}
using namespace std;
int main()
{int x,y,i;
ifstream fin("ctc.in");
ofstream fout("ctc.out");
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y;
a[x][y]=1;
b[y][x]=1;
}
for(int nod=1;nod<=n;nod++)
{if(viz[nod]==0)
{val++;
dfs(nod,a,viz);
dfs(nod,b,viz1);
for(int j=1;j<=n;j++)
viz[j]=viz1[j];
}
}
fout<<val<<endl;
for(i=1;i<=val;i++)
{for(int j=1;j<=n;j++)
if(viz[j]==i)
fout<<j<<" ";
fout<<endl;}
return 0;
}