int is_checked(Queue *G, Queue *Checked_ways, int V1, int V2)
{
        Node *q;
        for(q = Checked_ways[V1].exclude; q != NULL; q = q->next)
            if(q->vnum == V2)
                    return 1;
        for(q = Checked_ways[V2].exclude; q != NULL; q = q->next)
            if(q->vnum == V1)
                    return 1;
        return 0;
}
void search( int v, int w, int K, Queue *G, int n, Stack *s) //v ---> w (length > k), ret in Stack
{
        Queue *Checked_ways = (Queue *)calloc(n, sizeof(Queue));
        int L, tmp, flag, i, j, *prev = (int *)malloc(n * sizeof(int));
        Node *p, *q;
        for(i = 0; i < n; ++i) 
                prev[i] = -1;
        s->head = NULL; 
            
    for(tmp = v, L = 0, push(v, s); (tmp != w) || (L < K); )//пока не прийдем в вершину с нужным путем
   {
                for(flag = 0, p = G[tmp].exclude; p != NULL; p = p->next)//смотрим список смежности
                  if( !is_checked(G, Checked_ways, tmp, p->vnum) )//если в вершину можно пойти
                  {
                          flag = 1;
                          ++L;
                          prev[p->vnum] = tmp;
                          tmp       = p->vnum;
                          enq(prev[tmp], &Checked_ways[tmp]);//блокируем ребро
                          enq(tmp, &Checked_ways[prev[tmp]]);
                          push(p->vnum, s);//добавляем в путь
                          break;
                  }
                if(!flag)
                {               
                        del_queue(&Checked_ways[tmp]);//освобождаем тупиковую вершину от запретов  
           
                        enq(tmp, &Checked_ways[prev[tmp]]);
                        enq(prev[tmp], &Checked_ways[tmp]);
                          --L;
                        if(pop(s) == v && L == 0)
                        {
                                printf("No way :C");
                                del_stack(s);
                                return;
                        }
                        tmp = prev[tmp];
                }
        }
    return;
}