Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define Nmax 101
- using namespace std;
- int n,A[Nmax][Nmax],x[Nmax],v[Nmax],nr_varfuri[Nmax],nr_muchii[Nmax];
- void BF(int varf,int nrc) /// Parcurgem in latime
- {
- int st=1,dr=1;
- v[varf]=nrc;
- x[1]=varf;
- while(st<=dr)
- {
- int k=x[st];
- for(int i=1;i<=n;++i)
- if(v[i]==0&&A[k][i]==1)
- ++dr,v[i]=nrc,x[dr]=i;
- ++st;
- }
- }
- int main()
- {
- int x,y;
- ifstream f("componenteconexe2.in");
- f>>n;
- while(f>>x>>y)
- A[x][y]=A[y][x]=1;
- f.close();
- int nrc=0;
- for(int i=1;i<=n;++i) /// Aflam componentele conexe
- if(v[i]==0)
- ++nrc,BF(i,nrc);
- for(int i=1;i<=n;++i) /// Aflam cate varfuri are fiecare componenta conexa
- ++nr_varfuri[v[i]];
- for(int i=1;i<n;++i) /// Aflam cate muchii are fiecare componenta conexa
- for(int j=i+1;j<=n;++j)
- if(A[i][j]==1)
- ++nr_muchii[v[i]];
- int NR=0;
- for(int i=1;i<=nrc;++i) /// Din fiecare componenta eliminam atatea muchii astfel incat sa ramana arbore
- NR+=nr_muchii[i]-nr_varfuri[i]+1;
- ofstream g("componenteconexe2.out");
- g<<NR;
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement