#include <iostream>
#include <vector>
#include <queue>
#include <windows.h>
using namespace std;

struct pokoj
{
    vector <int> korytarz;

    void dodaj(int n) //korytarz
    {
        korytarz.push_back(n);
    }

};

int main()
{
    vector <pokoj> labirynt;

    for(int i=0; i<9; i++)
        labirynt.push_back(pokoj());    //0--1--2
                                        //|  |  |
    labirynt[0].dodaj(1);               //3--4  5
    labirynt[0].dodaj(3);               //      |
                                        //6--7--8
    labirynt[1].dodaj(0);
    labirynt[1].dodaj(4);
    labirynt[1].dodaj(2);

    labirynt[2].dodaj(1);
    labirynt[2].dodaj(5);

    labirynt[3].dodaj(0);
    labirynt[3].dodaj(4);

    labirynt[4].dodaj(1);
    labirynt[4].dodaj(3);

    labirynt[5].dodaj(2);
    labirynt[5].dodaj(8);

    labirynt[6].dodaj(7);

    labirynt[7].dodaj(6);
    labirynt[7].dodaj(8);

    labirynt[8].dodaj(5);
    labirynt[8].dodaj(7);

    vector <int> gdzie_moge;

    int wybor;

    int k=0;

    while(1)
    {
        for(int g=0; g<labirynt[k].korytarz.size(); g++)
            gdzie_moge.push_back(labirynt[k].korytarz[g]);

        cout<<"Jestes w pokoju "<<k<<". Dokad chcesz isc dalej?"<<endl;

        ponow_wybor:

                for(int i=0; i<gdzie_moge.size(); i++)
                    cout<<gdzie_moge[i]<<" ";

                cout<<"\n";

                cin>>wybor;
                //cls();
                system ("cls");

                if(wybor == gdzie_moge[0])k=gdzie_moge[0];
                else if(wybor == gdzie_moge[1])k=gdzie_moge[1];
                else if(wybor == gdzie_moge[2])k=gdzie_moge[2];
                else
                {
                    cout<<"Zly wybor. Wybierz ponownie."<<endl;
        goto ponow_wybor;
                }
                
            gdzie_moge.clear();
    }

    return 0;
}
