Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- using namespace std;
- int G[100][100];
- int n;
- int coada[100];
- int start;
- int sfarsit;
- int vizitat[100];
- int nod_start;
- int grad_noduri[100];
- int k=0;
- int read_data()
- {
- fstream f("input.in", ios::in);
- f>>n;
- for(int i=1; i<n; i++)
- for(int j=1; j<=n; j++)
- f>>G[i][j];
- return 0;
- }
- int grad()
- {
- int suma;
- for(int i=1; i<=n; i++)
- {
- suma=0;
- for(int j=1; j<=n; j++)
- {
- suma=suma+G[i][j];
- }
- grad_noduri[i]=suma;
- }
- return 0;
- }
- int nr_noduri_vizitate()
- {
- int viz=0;
- for(int i=1; i<=n; i++)
- {
- if(vizitat[i]) viz++;
- }
- return viz;
- }
- int BFS(int nume_nod)
- {
- start=1;
- sfarsit=1;
- coada[start]=nume_nod;
- while(start<=sfarsit)
- {
- //cout<<coada[start]<<", ";
- vizitat[coada[start]]=1;
- for(int i=1; i<=n; i++)
- {
- if((G[coada[start]][i]!=0) && (vizitat[i]==0))
- {
- sfarsit++;
- coada[sfarsit]=i;
- vizitat[i]=1;
- }
- }
- start++;
- }
- return 0;
- }
- int vizitati=1;
- int nightmare_cycle(int nod)
- {
- for(int i=1; i<=n; i++)
- if(vizitat[i]==0)vizitati = 0;
- if(vizitati==0)
- cout<<nod<<" ";
- for(int i=1; i<=n; i++)
- {
- if(G[nod][i]==1)
- {
- G[nod][i]=0;
- G[i][nod]=0;
- vizitat[i]=1;
- BFS(i);
- if(nr_noduri_vizitate()==(n-k)) nightmare_cycle(i);
- else
- {
- G[i][nod]=1;
- G[nod][i]=1;
- vizitat[i]=0;
- }
- }
- }
- return 0;
- }
- int main()
- {
- read_data();
- nightmare_cycle(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement