Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #define _CRT_SECURE_NO_WARNINGS
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <string>
- #include <map>
- #include <set>
- #include <algorithm>
- #include <vector>
- #include <stdio.h>
- #include <cmath>
- #include <math.h>
- #include <queue>
- #include <stack>
- #include <climits>
- #include <deque>
- #include <ctime>
- #include <iomanip>
- #include <bitset>
- #include <unordered_map>
- #include <unordered_set>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef unsigned int ui;
- #define mh() make_heap()
- #define poph() pop_heap()
- #define pushh() push_heap()
- #define sor(n) n.begin(), n.end()
- #define rsor(n) n.rbegin(), n.rend()
- #define mp make_pair
- #define files freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout)
- #define p(T) pair<T,T>
- #define toch(x) cout.precision(x), cout.setf(ios::fixed)
- #define znac(l) abs(l)/l
- #define IOS ios::sync_with_stdio(false)
- #define IOSB cin.tie(0), cout.tie(0);
- const ll ok = ll(1e9 + 7);
- ll bfs(ll a, ll b, vector<vector<ll>>graf, vector<ll>ln, vector<bool>u)
- {
- queue<ll>next;
- next.push(a);
- u[a] = 1;
- ln[a] = 0;
- while (!next.empty())
- {
- ll v = next.front();
- next.pop();
- for (int i = 0; i < graf[v].size(); i++)
- {
- if (!u[graf[v][i]])
- {
- u[graf[v][i]] = 1;
- ln[graf[v][i]] = ln[v] + 1;
- next.push(graf[v][i]);
- }
- }
- }
- return ln[b];
- }
- int main()
- {
- IOSB;
- IOS;
- #ifdef TheCompiler
- files;
- #endif
- vector<vector<ll>>graf(70);
- vector<ll>ln(70, 0);
- vector<bool>u(70, 0);
- unordered_map<string, ll>nm;
- {
- nm["Pobedy"] = 0;
- nm["I_Pyatiletki_square"] = 1;
- nm["Zvezda"] = 2;
- nm["7_klyuchey"] = 3;
- nm["Sortirovochnaya"] = 4;
- nm["China_town"] = 5;
- nm["Zarechny"] = 6;
- nm["Zelyony_ostrov"] = 7;
- nm["Tatishchevskaya"] = 8;
- nm["Verh_Isetskaya"] = 9;
- nm["Central_stadium"] = 10;
- nm["Kraulya"] = 11;
- nm["Metallurgov"] = 12;
- nm["MEGA"] = 13;
- nm["Volgogradskaya"] = 14;
- nm["Yugo_zapadnaya"] = 15;
- nm["Akademicheskaya"] = 16;
- nm["Aviatsionnaya"] = 17;
- nm["Voennaya"] = 18;
- nm["Sovhoznaya"] = 19;
- nm["Chkalovskaya"] = 20;
- nm["Botanicheskaya"] = 21;
- nm["Shcherbakovskaya"] = 22;
- nm["Uktusskie_Gory"] = 23;
- nm["Nizhne_Isetskaya"] = 24;
- nm["Himmash"] = 25;
- nm["Mayakovskaya"] = 26;
- nm["Parkovaya"] = 27;
- nm["Samolyotnaya"] = 28;
- nm["Vtorchermet"] = 29;
- nm["Keramicheskaya"] = 30;
- nm["Siniye_kamni"] = 31;
- nm["Lechebnaya"] = 32;
- nm["Varshavskaya"] = 33;
- nm["Kompressornaya"] = 34;
- nm["Koltsovo"] = 35;
- nm["Kamennye_palatki"] = 36;
- nm["University"] = 37;
- nm["Kalinovskaya"] = 38;
- nm["Italyanskaya"] = 39;
- nm["Ozyornaya"] = 40;
- nm["Shefskaya"] = 41;
- nm["Komsomolskaya"] = 42;
- nm["Vilonovskaya"] = 43;
- nm["Taganskaya"] = 44;
- nm["Elmash"] = 45;
- nm["Turbinnaya"] = 46;
- nm["Bakinskih_Komissarov"] = 47;
- nm["Prospekt_Kosmonavtov"] = 48;
- nm["Uralmash"] = 49;
- nm["Mashinostroiteley"] = 50;
- nm["Uralskaya"] = 51;
- nm["City"] = 52;
- nm["Kommunarov_square"] = 53;
- nm["Moskovskaya"] = 54;
- nm["Posadskaya"] = 55;
- nm["Dvorets_sporta"] = 56;
- nm["Bazhovskaya"] = 57;
- nm["Oborony_square"] = 58;
- nm["Sibirskaya"] = 59;
- nm["Vtuzgorodok"] = 60;
- nm["Gagarinskaya"] = 61;
- nm["Pionerskaya"] = 62;
- nm["Dinamo"] = 63;
- nm["1905_year_square"] = 64;
- nm["Geologicheskaya"] = 65;
- nm["Shevchenko"] = 66;
- nm["Teatralnaya"] = 67;
- nm["Vostochnaya"] = 68;
- nm["Kuybyshevskaya"] = 69;
- graf[4].push_back(3);
- graf[3].push_back(4);
- graf[5].push_back(4);
- graf[4].push_back(5);
- graf[6].push_back(5);
- graf[5].push_back(6);
- graf[52].push_back(6);
- graf[6].push_back(52);
- graf[64].push_back(52);
- graf[52].push_back(64);
- graf[69].push_back(64);
- graf[64].push_back(69);
- graf[59].push_back(69);
- graf[69].push_back(59);
- graf[31].push_back(59);
- graf[59].push_back(31);
- graf[32].push_back(31);
- graf[31].push_back(32);
- graf[33].push_back(32);
- graf[32].push_back(33);
- graf[34].push_back(33);
- graf[33].push_back(34);
- graf[35].push_back(34);
- graf[34].push_back(35);
- graf[8].push_back(7);
- graf[7].push_back(8);
- graf[9].push_back(8);
- graf[8].push_back(9);
- graf[53].push_back(9);
- graf[9].push_back(53);
- graf[64].push_back(53);
- graf[53].push_back(64);
- graf[67].push_back(64);
- graf[64].push_back(67);
- graf[68].push_back(67);
- graf[67].push_back(68);
- graf[60].push_back(68);
- graf[68].push_back(60);
- graf[36].push_back(60);
- graf[60].push_back(36);
- graf[37].push_back(36);
- graf[36].push_back(37);
- graf[12].push_back(13);
- graf[13].push_back(12);
- graf[11].push_back(12);
- graf[12].push_back(11);
- graf[10].push_back(11);
- graf[11].push_back(10);
- graf[54].push_back(10);
- graf[10].push_back(54);
- graf[64].push_back(54);
- graf[54].push_back(64);
- graf[66].push_back(64);
- graf[64].push_back(66);
- graf[62].push_back(66);
- graf[66].push_back(62);
- graf[46].push_back(62);
- graf[62].push_back(46);
- graf[45].push_back(46);
- graf[46].push_back(45);
- graf[44].push_back(45);
- graf[45].push_back(44);
- graf[15].push_back(16);
- graf[16].push_back(15);
- graf[14].push_back(15);
- graf[15].push_back(14);
- graf[55].push_back(14);
- graf[14].push_back(55);
- graf[65].push_back(55);
- graf[55].push_back(65);
- graf[67].push_back(65);
- graf[65].push_back(67);
- graf[61].push_back(67);
- graf[67].push_back(61);
- graf[42].push_back(61);
- graf[61].push_back(42);
- graf[41].push_back(42);
- graf[42].push_back(41);
- graf[40].push_back(41);
- graf[41].push_back(40);
- graf[39].push_back(40);
- graf[40].push_back(39);
- graf[38].push_back(39);
- graf[39].push_back(38);
- graf[18].push_back(19);
- graf[19].push_back(18);
- graf[17].push_back(18);
- graf[18].push_back(17);
- graf[56].push_back(17);
- graf[17].push_back(56);
- graf[65].push_back(56);
- graf[56].push_back(65);
- graf[69].push_back(65);
- graf[65].push_back(69);
- graf[68].push_back(69);
- graf[69].push_back(68);
- graf[61].push_back(68);
- graf[68].push_back(61);
- graf[43].push_back(61);
- graf[61].push_back(43);
- graf[29].push_back(30);
- graf[30].push_back(29);
- graf[28].push_back(29);
- graf[29].push_back(28);
- graf[21].push_back(28);
- graf[28].push_back(21);
- graf[27].push_back(21);
- graf[21].push_back(27);
- graf[26].push_back(27);
- graf[27].push_back(26);
- graf[58].push_back(26);
- graf[26].push_back(58);
- graf[69].push_back(58);
- graf[58].push_back(69);
- graf[67].push_back(69);
- graf[69].push_back(67);
- graf[66].push_back(67);
- graf[67].push_back(66);
- graf[51].push_back(66);
- graf[66].push_back(51);
- graf[2].push_back(51);
- graf[51].push_back(2);
- graf[1].push_back(2);
- graf[2].push_back(1);
- graf[0].push_back(1);
- graf[1].push_back(0);
- graf[24].push_back(25);
- graf[25].push_back(24);
- graf[23].push_back(24);
- graf[24].push_back(23);
- graf[22].push_back(23);
- graf[23].push_back(22);
- graf[21].push_back(22);
- graf[22].push_back(21);
- graf[20].push_back(21);
- graf[21].push_back(20);
- graf[57].push_back(20);
- graf[20].push_back(57);
- graf[65].push_back(57);
- graf[57].push_back(65);
- graf[64].push_back(65);
- graf[65].push_back(64);
- graf[63].push_back(64);
- graf[64].push_back(63);
- graf[51].push_back(63);
- graf[63].push_back(51);
- graf[50].push_back(51);
- graf[51].push_back(50);
- graf[49].push_back(50);
- graf[50].push_back(49);
- graf[48].push_back(49);
- graf[49].push_back(48);
- graf[47].push_back(48);
- graf[48].push_back(47);
- graf[53].push_back(54);
- graf[54].push_back(53);
- graf[52].push_back(53);
- graf[53].push_back(52);
- graf[51].push_back(52);
- graf[52].push_back(51);
- graf[62].push_back(51);
- graf[51].push_back(62);
- graf[61].push_back(62);
- graf[62].push_back(61);
- graf[60].push_back(61);
- graf[61].push_back(60);
- graf[59].push_back(60);
- graf[60].push_back(59);
- graf[58].push_back(59);
- graf[59].push_back(58);
- graf[57].push_back(58);
- graf[58].push_back(57);
- graf[56].push_back(57);
- graf[57].push_back(56);
- graf[55].push_back(56);
- graf[56].push_back(55);
- graf[54].push_back(55);
- graf[55].push_back(54);
- }
- ll n;
- cin >> n;
- for (int i = 1; i <= n; i++)
- {
- string a, b;
- cin >> a >> b;
- cout << bfs(nm[a], nm[b], graf, ln, u) << endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment