Pagini recente » Cod sursa (job #272649) | Istoria paginii runda/simulare_oni_liceu | Cod sursa (job #670518) | Cod sursa (job #121149) | Cod sursa (job #1447589)
#include <iostream>
#include <fstream>
int a[10000][10000],n,m,b[10000][10000],viz[10000],viz1[10000];
int val;
void dfs(int nod,int a[][10000],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;
}