OJ上的,做不出来,求解答

实在是想不明白了,求解惑,下面是我写的代码,只能通过部分测试点,比较两者到达终点前的时间大小,狮鹫算的是终点前一步的时间,还有这个不一定按最最优路径走,理解的事是同行或同列要多走两步到终点,想知道哪里错了,和如何实现
{#include <stdio.h>

#include<math.h>

int main(){

int x1,y1,x2,y2,x3,y3;

double speed1,speed2;

double t1,t2,t3,t4,t5;

double zd,od;

scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);

scanf("%lf%lf",&speed1,&speed2);

zd=abs(x3-x2)+abs(y3-y2);

od=abs(x2-x1)+abs(y2-y1);

if(x1==x2 && x2==x3){

    if((y3>y1 && y1>y2) || (y3<y1 && y1<y2)){

        zd+=2;

    }

}


if(y1==y2 && y2==y3){


    if((x3>x1 &&x1>x2) || (x3<x1 &&x1<x2)){

        zd+=2;

    }

}

t1=zd*1.0/(speed2*1.0);

t2=od*1.0/(speed1*1.0)+zd*1.0/(speed1*1.0);

t4=(zd-1.0)*1.0/(speed2*1.0);

t5=od*1.0/(speed1*1.0)+(zd-1.0)*1.0/(speed1*1.0);


if(x1==x2 && y1==y2){

    t1=2;

    t2=1;

}


if(x2==x3 && y2==y3){

    t1=1;

    t2=2;

}


if(t1>t5){

    printf("No");

}


else{

    printf("Yes");

}

return 0;

}}

img

img

img