Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("graf.in");
- ofstream fout("graf.out");
- void citire();
- void DF(int nod);
- void ComponenteConexe();
- void Init();
- void DFciclu(int nod);
- void BF(int nod);
- int a[20][20],n,i,j,v[20],gasit;
- int coada[20],ic,sc;
- int main()
- {
- citire();
- DF(3);
- fout<<endl;
- Init();
- ComponenteConexe();
- fout<<endl;
- Init();
- BF(6);
- Init();
- fout<<endl;
- DFciclu(1);
- if(gasit)
- fout<<"Are ciclu";
- else
- fout<<"Nu are ciclu";
- ;
- return 0;
- }
- void citire()
- {
- int x,y;
- fin>>n;
- while(fin>>x>>y)
- a[x][y]=a[y][x]=1;
- }
- void DF(int nod)
- {
- int k;
- fout<<nod<<" ";
- v[nod]=1;
- for(k=1;k<=n;k++)
- if(a[nod][k] == 1 && !v[k])
- DF(k);
- }
- void ComponenteConexe()
- {
- int nrcc = 0; ///nr comp. conexe
- for(i=1;i<=n;i++)
- if(!v[i])
- {
- nrcc++;
- fout<<"Componenta conexa :"<< nrcc <<" :";
- DF(i);
- }
- }
- void Init()
- {
- for(i=1;i<=20;i++)
- v[i] = 0;
- }
- void DFciclu(int nod)
- {
- int k;
- v[nod] = 1;
- for(k=1; k<=n; k++)
- if(a[nod][k] == 1)
- {
- a[k][nod] = 0;
- if(!v[k])
- DFciclu(k);
- else
- gasit = 1;
- }
- }
- void BF(int nod)
- {
- sc = ic = 1;
- coada[ic] = nod;
- v[nod] = 1;
- while(ic <= sc)
- {
- i=1;
- while(i<=n)
- {
- if(a[coada[ic]][i] == 1 && !v[i])
- {
- sc++;
- coada[sc] = i;
- v[i] = 1;
- }
- i++;
- }
- fout<<coada[ic]<<" ";
- ic++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement