Advertisement
a53

ComponenteConexe2

a53
Dec 19th, 2017
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #include <fstream>
  2. #define Nmax 101
  3. using namespace std;
  4. int n,A[Nmax][Nmax],x[Nmax],v[Nmax],nr_varfuri[Nmax],nr_muchii[Nmax];
  5.  
  6. void BF(int varf,int nrc) /// Parcurgem in latime
  7. {
  8. int st=1,dr=1;
  9. v[varf]=nrc;
  10. x[1]=varf;
  11. while(st<=dr)
  12. {
  13. int k=x[st];
  14. for(int i=1;i<=n;++i)
  15. if(v[i]==0&&A[k][i]==1)
  16. ++dr,v[i]=nrc,x[dr]=i;
  17. ++st;
  18. }
  19. }
  20.  
  21. int main()
  22. {
  23. int x,y;
  24. ifstream f("componenteconexe2.in");
  25. f>>n;
  26. while(f>>x>>y)
  27. A[x][y]=A[y][x]=1;
  28. f.close();
  29. int nrc=0;
  30. for(int i=1;i<=n;++i) /// Aflam componentele conexe
  31. if(v[i]==0)
  32. ++nrc,BF(i,nrc);
  33. for(int i=1;i<=n;++i) /// Aflam cate varfuri are fiecare componenta conexa
  34. ++nr_varfuri[v[i]];
  35. for(int i=1;i<n;++i) /// Aflam cate muchii are fiecare componenta conexa
  36. for(int j=i+1;j<=n;++j)
  37. if(A[i][j]==1)
  38. ++nr_muchii[v[i]];
  39. int NR=0;
  40. for(int i=1;i<=nrc;++i) /// Din fiecare componenta eliminam atatea muchii astfel incat sa ramana arbore
  41. NR+=nr_muchii[i]-nr_varfuri[i]+1;
  42. ofstream g("componenteconexe2.out");
  43. g<<NR;
  44. g.close();
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement