#include #include #include #include int n; struct A { int dis; int high; int flag; int hash; }E[111]; int map[111][111]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int MIN(int a,int b) { return a>b?b:a; } int DIJ() { int i,k; k=1; while(k) { E[k].flag=0; for(i=1;i<=n;i++) { if(k==i || !E[i].hash) continue; if(map[k][i]==1111111111) continue; if(E[k].dis+map[k][i]t2) {t=t1;t1=t2;t2=t;} for(i=0;i=0;i--) if(temp[i]==t2) {b=i;break;} dir=1111111111; len=1111111111; for(i=a;i>=0;i--) { for(l=b;l=dir) continue; for(j=1;j<=n;j++) { E[j].dis=1111111111; E[j].flag=1; if(temp[i]<=E[j].high && E[j].high<=temp[l]) E[j].hash=1; else E[j].hash=0; } E[1].dis=0; len=DIJ(); if(len!=1111111111) { if(abs(temp[i]-temp[l])