Предполагается, что получающийся граф - планарный; если граф не планарный, то желательно, чтобы было минимальное количество пересечений ребер.
Также для упрощения можно считать, что выходов всего 4 (nesw).
Код: Выделить всё
class Door
{
public:
Room *getRoom() const;
bool isOneside() const;
};
struct Room
{
struct Exit
{
Door *door;
Exit() : door(0) {}
};
Exit exits[6];
int x, y, z;
};
Исходно дан массив Room* rooms[N], нужно назначить всем комнатам координаты x, y, z.
Нужно, чтобы алгоритм корректно работал в подобных случаях:
Код: Выделить всё
*---*---*---*
| |
| *
|
*---*---*---*
*---*---*---*
| |
*---*-------*
Написавшему - приятная плюшка.