Cod sursa(job #1735411)

Utilizator LDPalcuPalcu Daniela LDPalcu Data 29 iulie 2016 19:20:56
Problema Stramosi Scor 70
Compilator c Status done
Runda Arhiva de probleme Marime 1.32 kb
#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;
}