Pagini recente » Cod sursa (job #3291868) | Cod sursa (job #3287285) | Cod sursa (job #3242786) | Cod sursa (job #2788289) | Cod sursa (job #254166)
Cod sursa(job #254166)
#include<stdio.h>
#define Nmax 100010
long aj,nr,n,m,viz[Nmax],viz2[Nmax],vizt[Nmax],st[Nmax],vf;
long sd=1;
struct elem
{
long inf;
elem *urm;
}*a[Nmax],*fin[Nmax],*at[Nmax];
void citire()
{
freopen("ctc.in","r",stdin);
long int x,y,co;
elem *p;
scanf("%ld%ld",&n,&m);
for(int i=0;i<m;i++)
{
scanf("%ld%ld",&x,&y);
p=new elem;
p->inf=y;
p->urm=a[x];
a[x]=p;
p=new elem;
p->inf=x;
p->urm=at[y];
at[y]=p;
}
}
/*long caut(elem *p,int ut)
{
if(ut==1)
{
while(p!=NULL)
{
if(viz[p->inf]==0)
return p->inf;
p=p->urm;
}
}
else
{
while(p!=NULL)
{
if(viz2[p->inf]==0)
return p->inf;
p=p->urm;
}
}
return -1;
}
void parcurg(long in,int ut)
{
st[0]=in;
vf=0;
while(vf>=0)
{
if(ut==1)
aj=caut(a[st[vf]],1);
else
aj=caut(at[st[vf]],2);
if(aj==-1)
{
vf--;
}
else
{
vf++;
if(ut==1)
viz[aj]++;
else
viz2[aj]++;
st[vf]=aj;
}
}
}
void save(long x)
{
elem *p;
int nraj=0;
for(long i=x;i<=n;i++)
{
if(viz[i]==1 && viz2[i]==1)
{
vizt[i]=1;
p=new elem;
p->inf=i;
p->urm=fin[nr];
fin[nr]=p;
nraj=1;
}
}
if(nraj==0)
{
vizt[sd]=1;
p=new elem;
p->inf=sd;
p->urm=fin[nr];
fin[nr]=p;
}
}
void init()
{
for(long i=1;i<Nmax;i++)
{
viz[i]=0;
viz2[i]=0;
}
}
void program()
{
while(sd<=n)
{
while(vizt[sd]!=0 && sd<=n)
{
sd++;
}
if(sd<=n)
{
parcurg(sd,1);
parcurg(sd,2);
save(sd);
nr++;
init();
}
}
}
void afisare()
{
freopen("ctc.out","w",stdout);
elem *p;
printf("%ld\n",nr);
for(long i=0;i<nr;i++)
{
p=fin[i];
while(p!=NULL)
{
printf("%ld ",p->inf);
p=p->urm;
}
printf("\n");
}
} */
int main()
{
citire();
while(1)
{
}
//program();
//afisare();
return 0;
}