Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Idee :
- Atata timp cat gradul unui nod este > 2
- din el pornesc cicluri de inserat in ciclul anterior.
- Adica :
- "Stau pe nod" pana cand il rezolv complet
- ( i.e. " strategie "nu ma grabesc" )
- ============================================
- 5*
- 1* 4* *6
- 2* *3 *9
- *7 *8 *10
- */
- #include<iostream>
- #include<fstream>
- using namespace std;
- int G[100][100];
- int n;
- int nr1,nr2;
- int C1[100];
- int C2[100];
- int edges[100];
- int read_data()
- { fstream f;
- f.open("input.txt",ios::in);
- f>>n;
- for(int i=1;i<=n;i++)
- {
- int dim=0;
- for(int j=1;j<=n;j++)
- {
- int aux;
- f>>aux;
- G[i][j]=aux;
- if(aux==1)
- {
- dim++;
- }
- }
- edges[i]=dim;
- }
- }
- int print_data(int here[],int dimension)
- {for(int i=1;i<=dimension;i++)
- cout<<here[i];
- }
- int insertc2inc1(int c1[],int *dimc1,int c2[],int dimc2,int k)
- {
- // deplasare
- for(int i=*dimc1;i>=k+1;i--) c1[i+dimc2-1]=c1[i];
- // insertie
- for(int i=1;i<=dimc2;i++) c1[k+i-1]=c2[i];
- *dimc1=*dimc1+dimc2-1;
- return 0; }
- int init_cicle(int some_cicle[],int *my_nodes)
- {*my_nodes=0;}
- int make_cicle(int here[],int *dimension,int vertex)
- {
- if ( edges[vertex]==0 ) { print_data(C1,nr1); return 0; }
- else
- {
- if (edges[vertex]>2) {
- // construiesc ciclul de tip C2 ( de inserat in ciclul de tip C1 )
- // ...
- init_cicle(C2,&nr2);
- make_cicle(C2,&nr2,vertex);
- insertc2inc1(here,dimension,C2,nr2,vertex);
- }
- else
- {
- // avansez in constructia ciclului de tip C1
- for ( int i=1;i<=n;i++ )
- {
- if (G[vertex][i]==1) {
- dimension++;
- here[*dimension]=i;
- edges[vertex]--;
- edges[i]--;
- cout<<"mama";
- make_cicle(here,dimension,i);
- }
- }
- }
- }
- }
- int main()
- {
- read_data();
- init_cicle(C1,&nr1);
- init_cicle(C2,&nr2);
- make_cicle(C1,&nr1,1);
- return 0; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement