Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <stack>
- #include <string>
- #include <algorithm>
- #include <memory>
- #include <cmath>
- // Имеется n городов, пронумерованных от 1 до n. Некоторые пары городов
- // соединены дорогами. Определить, можно ли попасть по этим дорогам
- // из одного заданного города в другой заданный город. Входная информация
- // о дорогах задаётся в виде последовательности пар чисел i и j (i < j и i, j1..n),
- // указывающих, что i-й и j-й города соединены дорогами.
- struct City {
- int id; //i
- int road; //j
- struct City* nextCity;
- };
- struct World {
- City* head;
- };
- int main2 (int argc, char *argv[]);
- void push (World& world, int i, int j);
- bool solve (World& world, int a, int b);
- int main (int argc, char** argv) {
- World world;
- push(world, 1, 2);
- push(world, 2, 3);
- push(world, 1, 3);
- push(world, ,);
- //Если i или j == -1 то Тимур идёт нахуй
- return 0;
- }
- void push (World& world, int& i, int j) {
- City* current = new City();
- current->id = i;
- current->road = j;
- current->nextCity = nullptr;
- if (!world.head) {
- world.head = current;
- }
- else {
- City* last = world.head;
- while (last->nextCity) last = last->nextCity;
- last->nextCity = current;
- }
- }
- bool solve (World& world, int a, int b) {
- 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);
- }
- current = current->nextCity;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement