Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include "lr1.h"
  2.  
  3. // Имеется n городов, пронумерованных от 1 до n. Некоторые пары городов
  4. // соединены дорогами. Определить, можно ли попасть по этим дорогам
  5. // из одного заданного города в другой заданный город. Входная информация
  6. // о дорогах задаётся в виде последовательности пар чисел i и j (i < j и i, j1..n),
  7. // указывающих, что i-й и j-й города соединены дорогами.
  8.  
  9.  
  10.  
  11. int main (int argc, char** argv) {
  12.  
  13.     World world;
  14.     push(world, 1, 2);
  15.     push(world, 2, 3);
  16.     push(world, 1, 3);
  17.     push(world, 4, 2);
  18.     int counter = 0;
  19.     bool res13 = solve(world, 1, 3, counter);
  20.     cout << res13;
  21.     return 0;
  22. }
  23.  
  24. void push (World& world, int& i, int j) {
  25.     City* current = new City();
  26.     current->id = i;
  27.     current->road = j;
  28.     current->next_city = nullptr;
  29.     if (!world.head) {
  30.         world.head = current;
  31.     }
  32.     else {
  33.         City* last = world.head;
  34.         while (last->next_city) last = last->next_city;
  35.         last->next_city = current;
  36.     }
  37. }
  38.  
  39. bool solve (World& world, int a, int b, int& step_number) {
  40.     cout << "Step [" << step_number << "]: looking for path from " << a << " to " << b << endl;
  41.     if (a == b) return true;
  42.     bool result = false;
  43.     City* current = world.head;
  44.     while (current != nullptr) {
  45.         if (current->id == a) {
  46.             current->id = -1;
  47.             result |= solve(world, current->road, b, ++step_number);
  48.         }
  49.         current = current->next_city;
  50.     }
  51.     return false;
  52. }
  53.  
  54. string read_file(string filename) {
  55.     ifstream input_file(filename);
  56.     if (!input_file.is_open()) {
  57.         cerr << "Error opening file\n" << endl;
  58.         return "";
  59.     }
  60.     string result;
  61.     input_file >> result;
  62.     return result;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement