Pagini recente » Cod sursa (job #1601557) | Cod sursa (job #1769325) | Cod sursa (job #2886183) | Cod sursa (job #751397) | Cod sursa (job #948176)
Cod sursa(job #948176)
# include <iostream>
# include <fstream>
# include <stdlib.h>
# define nmax 100000;
using namespace std;
fstream f("ctc.in",ios::in);
fstream g("ctc.out",ios::out);
int n,m,*a[nmax],*at[nmax],v[nmax],nr;
void init()
{
int i;
for(i=1; i<=n; i++)
{
a[i]=(int *) realloc(a[i], sizeof(int));
a[i][0]=0;
at[i]=(int *) realloc(at[i], sizeof(int));
at[i][0]=0;
}
}
void citire()
{
int x,y,i;
f>>n>>m;
init();
for(i=1; i<=m; i++)
{
f>>x>>y;
a[x][0]++;
a[x]=(int *) realloc(a[x], (a[x][0]+1)*sizeof(int));
a[x][a[x][0]]=y;
at[y][0]++;
at[y]=(int *) realloc(at[y], (at[y][0]+1)*sizeof(int));
at[y][at[y][0]]=x;
}
}
void tip()
{
int i,j;
for(i=1; i<=n; i++)
{
cout<<i<<"-> ";
for(j=1; j<=a[i][0]; j++)
cout<<a[i][j]<<" ";
cout<<'\n';
}
}
void bf(int k)
{
int i;
v[k]=1;
for(i=1; i<=a[k][0]; i++)
if(!v[a[k][i]])
bf(a[k][i]);
// pre[++nr]=k;
}
void bft(int k)
{
int i;
v[k]=0;
g<<k<<" ";
for(i=1; i<=at[k][0]; i++)
if(v[at[k][i]])
bft(at[k][i]);
}
int main()
{
g<<'\n';
citire();
//tip();
int i;
for(i=1; i<=n; i++)
if(!v[i])
bf(i);
/*for(i=n; i>=1; i--)
if(v[pre[i]])
{
bft(pre[i]);
cout<<'\n';
}
*/
for(i=1; i<=n; i++)
if(v[i])
{
nr+=1;
bft(i);
g<<'\n';
}
g.close();
g.open("ctc.out", ios::in | ios::out);
g<<nr;
return 0;
}