输入后就没反应了 运行时间过长 为什么啊

#include<stdio.h>
#include<stdlib.h>
typedef struct line
{
int a;
struct line *f;
}line,*linek;
void make(linek n[],int v,int r,int u[])
{
linek p;
u[v]=1;
p=n[v]->f;
while(p!=NULL)
{
v=p->a;
if(u[v]!=1)
{
if(v==r)
{
printf("T");
break;
}
make(n,v,r,u);
p=p->f;
}
}
}
int main()
{
linek n[7];
int i;
n[0]=(linek)malloc(sizeof(line));
n[0]->a=0;
n[0]->f=NULL;
for(i=1;i<7;i++)
{
n[i]=(linek)malloc(sizeof(line));
n[i]->a=i;
n[i]->f=NULL;
}
linek p,y;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=2;
n[1]->f=p;
y=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=4;
y->f=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=5;
n[2]->f=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=6;
n[3]->f=p;
y=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=5;
y->f=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=2;
n[4]->f=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=4;
n[5]->f=p;
p=(linek)malloc(sizeof(line));
p->f=NULL;
p->a=6;
n[6]->f=p;
int v;
int e,r;
scanf("%d",&e);
scanf("%d",&r);
v=e;
int u[7]={0,0,0,0,0,0,0};
make(n,v,r,u);
return 0;
}

#include<stdio.h>
#include<stdlib.h>
typedef struct line
{
    int a;
    struct line* f;
}line, * linek;
void make(linek n[], int v, int r, int u[])
{
    linek p;
    u[v] = 1;
    p = n[v]->f;
    while (p != NULL)
    {
        v = p->a;
        if (u[v] != 1)
        {
            if (v == r)
            {
                printf("T");
                break;
            }
            make(n, v, r, u);
        }
        p = p->f;
    }
}
int main()
{
    linek n[7];
    int i;
    n[0] = (linek)malloc(sizeof(line));
    n[0]->a = 0;
    n[0]->f = NULL;
    for (i = 1; i < 7; i++)
    {
        n[i] = (linek)malloc(sizeof(line));
        n[i]->a = i;
        n[i]->f = NULL;
    }
    linek p, y;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 2;
    n[1]->f = p;
    y = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 4;
    y->f = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 5;
    n[2]->f = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 6;
    n[3]->f = p;
    y = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 5;
    y->f = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 2;
    n[4]->f = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 4;
    n[5]->f = p;
    p = (linek)malloc(sizeof(line));
    p->f = NULL;
    p->a = 6;
    n[6]->f = p;
    int v;
    int e, r;
    scanf("%d", &e);
    scanf("%d", &r);
    v = e;
    int u[7] = { 0,0,0,0,0,0,0 };
    make(n, v, r, u);
    return 0;
}