Pagini recente » Cod sursa (job #867320) | Cod sursa (job #1373770) | Cod sursa (job #889240) | Cod sursa (job #1453299) | Cod sursa (job #130508)
Cod sursa(job #130508)
#include<fstream.h>
#include<alloc.h>
#define nmax 256
int *a[nmax], *comp[nmax], n, m, x, y, nr=0;
int viz[nmax];
void citire(){
ifstream fin("strazi.in");
fin>>n>>m;
for(int i=1; i<=n; i++){
a[i]=(int*)realloc(a[i],sizeof(int));
a[i][0]=0;
comp[i]=(int*)realloc(comp[i],sizeof(int));
comp[i][0]=0;
}
for(int p=1; p<=m; p++) {
fin>>x>>y;
a[x][0]++;
a[x]=(int *)realloc(a[x], (a[x][0]+1)*sizeof(int));
a[x][a[x][0]]=y;
}
}
void df(int x){
comp[nr][0]++;
comp[nr]=(int*)realloc(comp[nr],(comp[nr][0]+1)*sizeof(int));
comp[nr][comp[nr][0]]=x;
viz[x]=1;
for(int i=1; i<=a[x][0]; i++)
if(!viz[a[x][i]]) {
df(a[x][i]);
break;
}
}
int main(){
citire();
for(int i=1; i<=n; i++)
if (!viz[i]) {
nr++;
df(i);
}
ofstream fout("strazi.out");
fout<<nr-1<<'\n';
for(i=1; i<nr; i++) fout<<comp[i][comp[i][0]]<<' '<<comp[i+1][1]<<'\n';
for(i=1; i<=nr; i++)
for(int j=1; j<=comp[i][0]; j++) fout<<comp[i][j]<<' ';
fout<<'\n';
fout.close();
return 0;
}