artemgf

Екатеринбургское метро 2

Jun 24th, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.26 KB | None | 0 0
  1. #pragma once
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #define _USE_MATH_DEFINES
  4. #include <iostream>
  5. #include <string>
  6. #include <map>
  7. #include <set>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <stdio.h>
  11. #include <cmath>
  12. #include <math.h>
  13. #include <queue>
  14. #include <stack>
  15. #include <climits>
  16. #include <deque>
  17. #include <ctime>
  18. #include <iomanip>
  19. #include <bitset>
  20. #include <unordered_map>
  21. #include <unordered_set>
  22.  
  23. using namespace std;
  24.  
  25. typedef long long ll;
  26. typedef unsigned long long ull;
  27. typedef unsigned int ui;
  28.  
  29. #define mh() make_heap()
  30. #define poph() pop_heap()
  31. #define pushh() push_heap()
  32. #define sor(n) n.begin(), n.end()
  33. #define rsor(n) n.rbegin(), n.rend()
  34. #define mp make_pair
  35. #define files freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout)
  36. #define p(T) pair<T,T>
  37. #define toch(x) cout.precision(x), cout.setf(ios::fixed)
  38. #define znac(l) abs(l)/l
  39. #define IOS ios::sync_with_stdio(false)
  40. #define IOSB cin.tie(0), cout.tie(0);
  41. const ll ok = ll(1e9 + 7);
  42. ll bfs(ll a, ll b, vector<vector<ll>>graf, vector<ll>ln, vector<bool>u)
  43. {
  44.     queue<ll>next;
  45.     next.push(a);
  46.     u[a] = 1;
  47.     ln[a] = 0;
  48.     while (!next.empty())
  49.     {
  50.         ll v = next.front();
  51.         next.pop();
  52.         for (int i = 0; i < graf[v].size(); i++)
  53.         {
  54.             if (!u[graf[v][i]])
  55.             {
  56.                 u[graf[v][i]] = 1;
  57.                 ln[graf[v][i]] = ln[v] + 1;
  58.                 next.push(graf[v][i]);
  59.             }
  60.         }
  61.     }
  62.     return ln[b];
  63. }
  64. int main()
  65. {
  66.     IOSB;
  67.     IOS;
  68. #ifdef TheCompiler
  69.     files;
  70. #endif
  71.     vector<vector<ll>>graf(70);
  72.     vector<ll>ln(70, 0);
  73.     vector<bool>u(70, 0);
  74.     unordered_map<string, ll>nm;
  75.     {
  76.         nm["Pobedy"] = 0;
  77.         nm["I_Pyatiletki_square"] = 1;
  78.         nm["Zvezda"] = 2;
  79.         nm["7_klyuchey"] = 3;
  80.         nm["Sortirovochnaya"] = 4;
  81.         nm["China_town"] = 5;
  82.         nm["Zarechny"] = 6;
  83.         nm["Zelyony_ostrov"] = 7;
  84.         nm["Tatishchevskaya"] = 8;
  85.         nm["Verh_Isetskaya"] = 9;
  86.         nm["Central_stadium"] = 10;
  87.         nm["Kraulya"] = 11;
  88.         nm["Metallurgov"] = 12;
  89.         nm["MEGA"] = 13;
  90.         nm["Volgogradskaya"] = 14;
  91.         nm["Yugo_zapadnaya"] = 15;
  92.         nm["Akademicheskaya"] = 16;
  93.         nm["Aviatsionnaya"] = 17;
  94.         nm["Voennaya"] = 18;
  95.         nm["Sovhoznaya"] = 19;
  96.         nm["Chkalovskaya"] = 20;
  97.         nm["Botanicheskaya"] = 21;
  98.         nm["Shcherbakovskaya"] = 22;
  99.         nm["Uktusskie_Gory"] = 23;
  100.         nm["Nizhne_Isetskaya"] = 24;
  101.         nm["Himmash"] = 25;
  102.         nm["Mayakovskaya"] = 26;
  103.         nm["Parkovaya"] = 27;
  104.         nm["Samolyotnaya"] = 28;
  105.         nm["Vtorchermet"] = 29;
  106.         nm["Keramicheskaya"] = 30;
  107.         nm["Siniye_kamni"] = 31;
  108.         nm["Lechebnaya"] = 32;
  109.         nm["Varshavskaya"] = 33;
  110.         nm["Kompressornaya"] = 34;
  111.         nm["Koltsovo"] = 35;
  112.         nm["Kamennye_palatki"] = 36;
  113.         nm["University"] = 37;
  114.         nm["Kalinovskaya"] = 38;
  115.         nm["Italyanskaya"] = 39;
  116.         nm["Ozyornaya"] = 40;
  117.         nm["Shefskaya"] = 41;
  118.         nm["Komsomolskaya"] = 42;
  119.         nm["Vilonovskaya"] = 43;
  120.         nm["Taganskaya"] = 44;
  121.         nm["Elmash"] = 45;
  122.         nm["Turbinnaya"] = 46;
  123.         nm["Bakinskih_Komissarov"] = 47;
  124.         nm["Prospekt_Kosmonavtov"] = 48;
  125.         nm["Uralmash"] = 49;
  126.         nm["Mashinostroiteley"] = 50;
  127.         nm["Uralskaya"] = 51;
  128.         nm["City"] = 52;
  129.         nm["Kommunarov_square"] = 53;
  130.         nm["Moskovskaya"] = 54;
  131.         nm["Posadskaya"] = 55;
  132.         nm["Dvorets_sporta"] = 56;
  133.         nm["Bazhovskaya"] = 57;
  134.         nm["Oborony_square"] = 58;
  135.         nm["Sibirskaya"] = 59;
  136.         nm["Vtuzgorodok"] = 60;
  137.         nm["Gagarinskaya"] = 61;
  138.         nm["Pionerskaya"] = 62;
  139.         nm["Dinamo"] = 63;
  140.         nm["1905_year_square"] = 64;
  141.         nm["Geologicheskaya"] = 65;
  142.         nm["Shevchenko"] = 66;
  143.         nm["Teatralnaya"] = 67;
  144.         nm["Vostochnaya"] = 68;
  145.         nm["Kuybyshevskaya"] = 69;
  146.         graf[4].push_back(3);
  147.         graf[3].push_back(4);
  148.         graf[5].push_back(4);
  149.         graf[4].push_back(5);
  150.         graf[6].push_back(5);
  151.         graf[5].push_back(6);
  152.         graf[52].push_back(6);
  153.         graf[6].push_back(52);
  154.         graf[64].push_back(52);
  155.         graf[52].push_back(64);
  156.         graf[69].push_back(64);
  157.         graf[64].push_back(69);
  158.         graf[59].push_back(69);
  159.         graf[69].push_back(59);
  160.         graf[31].push_back(59);
  161.         graf[59].push_back(31);
  162.         graf[32].push_back(31);
  163.         graf[31].push_back(32);
  164.         graf[33].push_back(32);
  165.         graf[32].push_back(33);
  166.         graf[34].push_back(33);
  167.         graf[33].push_back(34);
  168.         graf[35].push_back(34);
  169.         graf[34].push_back(35);
  170.         graf[8].push_back(7);
  171.         graf[7].push_back(8);
  172.         graf[9].push_back(8);
  173.         graf[8].push_back(9);
  174.         graf[53].push_back(9);
  175.         graf[9].push_back(53);
  176.         graf[64].push_back(53);
  177.         graf[53].push_back(64);
  178.         graf[67].push_back(64);
  179.         graf[64].push_back(67);
  180.         graf[68].push_back(67);
  181.         graf[67].push_back(68);
  182.         graf[60].push_back(68);
  183.         graf[68].push_back(60);
  184.         graf[36].push_back(60);
  185.         graf[60].push_back(36);
  186.         graf[37].push_back(36);
  187.         graf[36].push_back(37);
  188.         graf[12].push_back(13);
  189.         graf[13].push_back(12);
  190.         graf[11].push_back(12);
  191.         graf[12].push_back(11);
  192.         graf[10].push_back(11);
  193.         graf[11].push_back(10);
  194.         graf[54].push_back(10);
  195.         graf[10].push_back(54);
  196.         graf[64].push_back(54);
  197.         graf[54].push_back(64);
  198.         graf[66].push_back(64);
  199.         graf[64].push_back(66);
  200.         graf[62].push_back(66);
  201.         graf[66].push_back(62);
  202.         graf[46].push_back(62);
  203.         graf[62].push_back(46);
  204.         graf[45].push_back(46);
  205.         graf[46].push_back(45);
  206.         graf[44].push_back(45);
  207.         graf[45].push_back(44);
  208.         graf[15].push_back(16);
  209.         graf[16].push_back(15);
  210.         graf[14].push_back(15);
  211.         graf[15].push_back(14);
  212.         graf[55].push_back(14);
  213.         graf[14].push_back(55);
  214.         graf[65].push_back(55);
  215.         graf[55].push_back(65);
  216.         graf[67].push_back(65);
  217.         graf[65].push_back(67);
  218.         graf[61].push_back(67);
  219.         graf[67].push_back(61);
  220.         graf[42].push_back(61);
  221.         graf[61].push_back(42);
  222.         graf[41].push_back(42);
  223.         graf[42].push_back(41);
  224.         graf[40].push_back(41);
  225.         graf[41].push_back(40);
  226.         graf[39].push_back(40);
  227.         graf[40].push_back(39);
  228.         graf[38].push_back(39);
  229.         graf[39].push_back(38);
  230.         graf[18].push_back(19);
  231.         graf[19].push_back(18);
  232.         graf[17].push_back(18);
  233.         graf[18].push_back(17);
  234.         graf[56].push_back(17);
  235.         graf[17].push_back(56);
  236.         graf[65].push_back(56);
  237.         graf[56].push_back(65);
  238.         graf[69].push_back(65);
  239.         graf[65].push_back(69);
  240.         graf[68].push_back(69);
  241.         graf[69].push_back(68);
  242.         graf[61].push_back(68);
  243.         graf[68].push_back(61);
  244.         graf[43].push_back(61);
  245.         graf[61].push_back(43);
  246.         graf[29].push_back(30);
  247.         graf[30].push_back(29);
  248.         graf[28].push_back(29);
  249.         graf[29].push_back(28);
  250.         graf[21].push_back(28);
  251.         graf[28].push_back(21);
  252.         graf[27].push_back(21);
  253.         graf[21].push_back(27);
  254.         graf[26].push_back(27);
  255.         graf[27].push_back(26);
  256.         graf[58].push_back(26);
  257.         graf[26].push_back(58);
  258.         graf[69].push_back(58);
  259.         graf[58].push_back(69);
  260.         graf[67].push_back(69);
  261.         graf[69].push_back(67);
  262.         graf[66].push_back(67);
  263.         graf[67].push_back(66);
  264.         graf[51].push_back(66);
  265.         graf[66].push_back(51);
  266.         graf[2].push_back(51);
  267.         graf[51].push_back(2);
  268.         graf[1].push_back(2);
  269.         graf[2].push_back(1);
  270.         graf[0].push_back(1);
  271.         graf[1].push_back(0);
  272.         graf[24].push_back(25);
  273.         graf[25].push_back(24);
  274.         graf[23].push_back(24);
  275.         graf[24].push_back(23);
  276.         graf[22].push_back(23);
  277.         graf[23].push_back(22);
  278.         graf[21].push_back(22);
  279.         graf[22].push_back(21);
  280.         graf[20].push_back(21);
  281.         graf[21].push_back(20);
  282.         graf[57].push_back(20);
  283.         graf[20].push_back(57);
  284.         graf[65].push_back(57);
  285.         graf[57].push_back(65);
  286.         graf[64].push_back(65);
  287.         graf[65].push_back(64);
  288.         graf[63].push_back(64);
  289.         graf[64].push_back(63);
  290.         graf[51].push_back(63);
  291.         graf[63].push_back(51);
  292.         graf[50].push_back(51);
  293.         graf[51].push_back(50);
  294.         graf[49].push_back(50);
  295.         graf[50].push_back(49);
  296.         graf[48].push_back(49);
  297.         graf[49].push_back(48);
  298.         graf[47].push_back(48);
  299.         graf[48].push_back(47);
  300.         graf[53].push_back(54);
  301.         graf[54].push_back(53);
  302.         graf[52].push_back(53);
  303.         graf[53].push_back(52);
  304.         graf[51].push_back(52);
  305.         graf[52].push_back(51);
  306.         graf[62].push_back(51);
  307.         graf[51].push_back(62);
  308.         graf[61].push_back(62);
  309.         graf[62].push_back(61);
  310.         graf[60].push_back(61);
  311.         graf[61].push_back(60);
  312.         graf[59].push_back(60);
  313.         graf[60].push_back(59);
  314.         graf[58].push_back(59);
  315.         graf[59].push_back(58);
  316.         graf[57].push_back(58);
  317.         graf[58].push_back(57);
  318.         graf[56].push_back(57);
  319.         graf[57].push_back(56);
  320.         graf[55].push_back(56);
  321.         graf[56].push_back(55);
  322.         graf[54].push_back(55);
  323.         graf[55].push_back(54);
  324.     }
  325.     ll n;
  326.     cin >> n;
  327.     for (int i = 1; i <= n; i++)
  328.     {
  329.         string a, b;
  330.         cin >> a >> b;
  331.         cout << bfs(nm[a], nm[b], graf, ln, u) << endl;
  332.     }
  333.     return 0;
  334. }
Add Comment
Please, Sign In to add comment