Pagini recente » Cod sursa (job #2522212) | Cod sursa (job #20967) | Cod sursa (job #1227381) | Cod sursa (job #3208423) | Cod sursa (job #1735411)
#include <stdio.h>
#include <stdlib.h>
#define max 250000
typedef struct nodetype
{
int key;
struct nodetype *next;
}NODE;
typedef struct
{
int n;
NODE *vf[max+1];
int parinte[max+1];
int culoare[max+1];
}GRAF;
GRAF *g;
enum culoare{alb,gri,negru};
void create(GRAF *g,int x,int y)
{
NODE *p;
p=(NODE *)malloc(sizeof(NODE));
p->key=y;
p->next=g->vf[x];
g->vf[x]=p;
}
int stramos(int y,int k)
{
if (y==0)
return 0;
else
{
if (k==0 )
return y;
else
{ k--;
stramos(g->parinte[y],k);
}
}
}
int main()
{
FILE *pf,*pg;
pf=fopen("stramosi.in","r");
pg=fopen("stramosi.out","w");
g=(GRAF *)malloc(sizeof(GRAF));
int m;
fscanf(pf,"%d %d",&g->n,&m);
int i,j,c;
for (i=1; i<=g->n; i++)
g->vf[i]=NULL;
for (i=1; i<=g->n; i++)
{
fscanf(pf,"%d",&g->parinte[i]);
if (g->parinte[i]!=0)
{ create(g,i,g->parinte[i]);
create(g,g->parinte[i],i);
}
}
while (!feof(pf))
{
fscanf(pf,"%d %d",&i,&j);
c=stramos(i,j);
fprintf(pg,"%d",c);
fprintf(pg,"\n");
}
//afisare(g);
return 0;
}