哪位好心大佬可以帮我分析一下

刚做了数据结构拯救007的题,由于对编程处于陌生小白阶段,题目提交后总是显示段错误,心理很迷惑,想寻求一下帮助。(这个代码也是我看这个网站上的大佬写的思路,自己理解做的)

#include<stdio.h>
#include <string.h>
struct node{
    int x;
    int y;
}s[102];//建立一个结构
int Visit[102];
int flag=0;
int border(int i,int D){
    if((s[i].x)<=(D-50)||(s[i].x)>=(50-D)||(s[i].y)<=(D-50)||(s[i].y)>=(50-D))
       return 1;
       else
        return 0;
}//判断能否一次性跳过
int distangue(int i,int j,int D){
    if((s[i].x-s[j].x)*(s[i].x-s[j].x)+(s[i].y-s[j].y)*(s[i].y-s[j].y)<=D*D)
        return 1;
    else
        return 0;
}//判断两点距离是否小于D
int Fist(int D,int i){
    if(s[i].x*s[i].x+s[i].y*s[i].y<=(D+7.5)*(D+7.5))
        return 1;
    else
        return 0;
}//判断能否第一次逃脱
int CanEscape(int t,int D,int N){
    Visit[t]=1;
    if(border(t,D)==1)
        flag=1;
    int i;
    for(i=0;i<N;i++){
            if(!Visit[i]&&distangue(t,i,D))
             flag=CanEscape(t,D,N);
            }
    return flag;

}//判断能否逃脱
//mian函数
int main()
{
    int D;
    int N;
    scanf("%d%d",&D,&N);
    int i;
    for(i=0;i<N;i++)
    {
        scanf("%d%d",&(s[i].x),&(s[i].y));
    }
    memset(Visit,0,sizeof(Visit));
    if(D>=42.5)
        printf("Yes");
    else{
        for(i=0;i<N;i++){
            if(!Visit[i]&&Fist(D,i))
                CanEscape(i,D,N);
        }
    }
    if(flag==1)
        printf("Yes");
    else
        printf("No");
    return 0;
}

 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。