Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "lr1.h"
- // Имеется n городов, пронумерованных от 1 до n. Некоторые пары городов
- // соединены дорогами. Определить, можно ли попасть по этим дорогам
- // из одного заданного города в другой заданный город. Входная информация
- // о дорогах задаётся в виде последовательности пар чисел i и j (i < j и i, j1..n),
- // указывающих, что i-й и j-й города соединены дорогами.
- int main (int argc, char** argv) {
- World world;
- push(world, 1, 2);
- push(world, 2, 3);
- push(world, 1, 3);
- push(world, 4, 2);
- int counter = 0;
- bool res13 = solve(world, 1, 3, counter);
- cout << res13;
- return 0;
- }
- void push (World& world, int& i, int j) {
- City* current = new City();
- current->id = i;
- current->road = j;
- current->next_city = nullptr;
- if (!world.head) {
- world.head = current;
- }
- else {
- City* last = world.head;
- while (last->next_city) last = last->next_city;
- last->next_city = current;
- }
- }
- bool solve (World& world, int a, int b, int& step_number) {
- cout << "Step [" << step_number << "]: looking for path from " << a << " to " << b << endl;
- if (a == b) return true;
- bool result = false;
- City* current = world.head;
- while (current != nullptr) {
- if (current->id == a) {
- current->id = -1;
- result |= solve(world, current->road, b, ++step_number);
- }
- current = current->next_city;
- }
- return false;
- }
- string read_file(string filename) {
- ifstream input_file(filename);
- if (!input_file.is_open()) {
- cerr << "Error opening file\n" << endl;
- return "";
- }
- string result;
- input_file >> result;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement