for(int&x:sp)
        for(int&y:sp)
            if(x>y)
            {
                ans=max(ans,min(dist1[x]+distN[N+1-y],dist1[y]+distN[N+1-x])+1);
                //cout<<' '<
            }
    ans=min(ans,dist1[N]);


대충 이런식으로 양쪽 스페셜필드에 건설한 다리를 통과하는 최소거리의 최댓값을 구한다음 다리 놓기전 최소거리랑 비교하면 되는거 아님?