Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- using namespace std;
- class Lista;
- struct sasiad {
- int v;
- Lista *sasiado;
- };
- class Lista {
- public:
- typedef sasiad wartosc ;
- private :
- struct element {
- wartosc w ;
- element * nastepny ;
- element * poprzedni;
- };
- typedef element * pozycja ;
- private:
- pozycja head;
- public:
- Lista (){
- head = new element;
- head->nastepny = head->poprzedni = head;
- }
- ~ Lista () {
- pozycja p = head->nastepny;
- while (p != head) {
- pozycja nastepny = p->nastepny;
- delete p;
- p = nastepny;
- }
- delete head;
- }
- public:
- bool empty (){
- if ( head == NULL )
- return true ;
- else
- return false ;
- }
- sasiad front (){
- //if (empty()) return 0;
- return head->nastepny->w;
- }
- sasiad back (){
- //if (empty()) return 0;
- return head -> poprzedni -> w;
- }
- void push_front (wartosc w ){
- pozycja p = new element;
- p->w = w;
- p->nastepny = head->nastepny;
- p->poprzedni = head;
- p->nastepny->poprzedni = p;
- p->poprzedni->nastepny = p;
- }
- void push_back (wartosc w ){
- pozycja p = new element;
- p->w = w;
- p->nastepny = head;
- p->poprzedni = head->poprzedni;
- p->nastepny->poprzedni = p;
- p->poprzedni->nastepny = p;
- }
- void pop_front (){
- pozycja p = head->nastepny;
- p->poprzedni->nastepny = p->nastepny;
- p->nastepny->poprzedni = p->poprzedni;
- delete p;
- }
- void pop_back (){
- pozycja p = head->poprzedni;
- p->poprzedni->nastepny = p->nastepny;
- p->nastepny->poprzedni = p->poprzedni;
- delete p;
- }
- };
- class Lista_I {
- public:
- typedef int wartosc ;
- private :
- struct element {
- wartosc w ;
- element * nastepny ;
- element * poprzedni;
- };
- typedef element * pozycja ;
- private:
- pozycja head;
- public:
- Lista_I (){
- head = new element;
- head->nastepny = head->poprzedni = head;
- }
- ~ Lista_I () {
- pozycja p = head->nastepny;
- while (p != head) {
- pozycja nastepny = p->nastepny;
- delete p;
- p = nastepny;
- }
- delete head;
- }
- public:
- bool empty (){
- if ( head == NULL )
- return true ;
- else
- return false ;
- }
- int front (){
- //if (empty()) return 0;
- return head->nastepny->w;
- }
- int back (){
- //if (empty()) return 0;
- return head -> poprzedni -> w;
- }
- void push_front (wartosc w ){
- pozycja p = new element;
- p->w = w;
- p->nastepny = head->nastepny;
- p->poprzedni = head;
- p->nastepny->poprzedni = p;
- p->poprzedni->nastepny = p;
- }
- void push_back (wartosc w ){
- pozycja p = new element;
- p->w = w;
- p->nastepny = head;
- p->poprzedni = head->poprzedni;
- p->nastepny->poprzedni = p;
- p->poprzedni->nastepny = p;
- }
- void pop_front (){
- pozycja p = head->nastepny;
- p->poprzedni->nastepny = p->nastepny;
- p->nastepny->poprzedni = p->poprzedni;
- delete p;
- }
- void pop_back (){
- pozycja p = head->poprzedni;
- p->poprzedni->nastepny = p->nastepny;
- p->nastepny->poprzedni = p->poprzedni;
- delete p;
- }
- };
- sasiad **wstaw(int n, sasiad **tab)
- {
- int w1, w2;
- for (int j=0; j<n; j++)
- {
- //tab[j]=NULL;
- scanf("%d", &w1);
- scanf("%d", &w2);
- tab[w1]->sasiado->push_back(*tab[w2]);
- tab[w2]->sasiado->push_back(*tab[w1]);
- cout << "Test" << endl;
- }
- return tab;
- }
- void dfs (int v, sasiad *sasiedzi[], bool odwiedzony[])
- {
- sasiad *wsk ;
- int pom;
- Lista_I s ;
- s.push_back(v);
- while (!s.empty())
- {
- pom=s.back();
- s.pop_back();
- if (!odwiedzony[pom])
- {
- odwiedzony [pom]=true;
- cout << pom << endl;
- wsk=sasiedzi[pom];
- while (wsk != NULL)
- {
- cout << wsk->v << endl;
- s.push_back(wsk->v);
- //wsk=wsk->nastepny;
- }
- }
- }
- }
- //Lista sasiadki[n];
- int main()
- {
- int n, m;
- scanf("%d", &n);
- scanf("%d", &m);
- if (n==m)
- {
- sasiad *tab[n];
- Lista sasiadki[n];
- bool odwiedzony[n];
- for (int i=0; i<n; i++)
- {
- tab[i]=new sasiad;
- odwiedzony[i]=false;
- }
- sasiad **tab2;
- tab2=wstaw(n, tab);
- dfs(0, tab2, odwiedzony);
- }
- else puts("TO NIE KARTOFEL");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement