Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("club.in");
- ofstream g("club.out");
- int n, viz[105], a[105][105],nc;
- void citire()
- {
- int x,y;
- f>>n;
- while(!f.eof())
- {
- f>>x>>y;
- a[x][y]=1;
- a[y][x]=1;
- }
- }
- void df(int k)
- {
- int i;
- viz[k]=1;
- for(i=1;i<=n;i++)
- if(viz[i]==0 && a[k][i]==1)
- df(i);
- }
- void df_afisare(int k)
- {
- int i;
- viz[k]=1;
- g<<k<<" ";
- for(i=1;i<=n;i++)
- if(viz[i]==0 && a[k][i]==1)
- df_afisare(i);
- }
- int main()
- {
- int i;
- citire();
- df(1);
- nc=1;
- for(i=1;i<=n;i++)
- if(viz[i]==0)
- {
- nc++;
- df(i);
- }
- g<<nc<<endl;
- for(i=1;i<=n;i++) // reinitializez vectorul viz cu 0, pt a putea parcurge din nou
- viz[i]=0;
- df_afisare(1); // fac parcurgerea nodurilor din prima componenta conexa + afisez nodurile
- for(i=1;i<=n;i++)
- if(viz[i]==0) // daca in viz gasesc o valoare de 0, fac parcurgerea incepand cu acel nod, altfel afisand o noua componenta conexa
- {
- g<<endl;
- df_afisare(i);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement