1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#include <iostream> #include <set> #include <algorithm> #include <string.h> #include <queue> #include <stack> #define ll long long using namespace std; struct { ll x, y, lx, ly; }node[4]; ll x, y, last_x, last_y; bool vis[4]; ll ans=0x3f3f3f3f3f3f3f3f; ll dist(ll u,ll v,ll mx,ll my) { return abs(u - mx) + abs(v - my); } void dfs(int k,ll u,ll v,ll time) { if(k==3) { ans = min(ans, time+dist(u, v, last_x, last_y)); return ; } dfs(k + 1, u, v, time); for (int i = 1; i <= 3;i++) { if(!vis[i]) { vis[i] = 1; dfs(k + 1, node[i].x, node[i].y, time + 10 + dist(u, v, node[i].lx, node[i].ly)); dfs(k + 1, node[i].lx, node[i].ly, time + 10 + dist(u, v, node[i].x, node[i].y)); vis[i] = 0; } } } int main() { cin >> x >> y >> last_x >> last_y; for (int i = 1; i <= 3;i++) { cin >> node[i].x >> node[i].y >> node[i].lx >> node[i].ly; } dfs(0,x,y,0); cout << ans << endl; }
|
近期评论