Teleportation
题面

题意
就是有一个终点和一个起点外加1套传送门,求从起点到终点所需要的最小步数?
分析
这一道题数据非常小,所以可以初步断定是简单题,但是一般这种简单题就喜欢设一些陷阱。而这道题的陷阱是起点坐标a不一定小于等于b,这就会造成一些代码wa。所以,我们一开始就可以对a,b的值做一些处理,如果a>b,则swap(a,b)。然后我们就开始讨论如何从a走到b,由于传送门只能从x传到y或者从y传到x。那我们就可以把传送门看为一个量,也就说,一次行走过程中最多使用一次传送门。(1)使用传送门x (2)使用传送门y。模拟3个过程

  1. 直接从a->b
  2. 先从a->x(->y传送门)->b
  3. 先从a->y(->x传送门)->b
    这样就可以枚举出正确答案
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <bitset>
#include <vector>
#include <string>
using namespace std;
typedef long long ll;
int main(){
ll a,b,x,y,sum,ant=0,q;
cin>>a>>b>>x>>y;
if(a>b){
	q=a;
	a=b;
	b=q;
}
sum=b-a;
if(x-a>0) ant+=x-a;
else ant+=a-x;
if(y-b>0) ant+=y-b;
else ant+=b-y;
sum=min(sum,ant);
ant=0;
if(y-a>0) ant+=y-a;
else ant+=a-y;
if(x-b>0) ant+=x-b;
else ant+=b-x;
sum=min(sum,ant);
cout<<sum<<endl;
return 0;
}