Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream.h>
- #include <iostream.h>
- ifstream f("date.in");
- int a[100][100],n,i,j,k,g[100][100],viz[10000],viz2[10000];
- int neviz(){
- for(i=1;i<=n;i++)
- if(viz[i]==0)
- return i;
- return 0;
- }
- int main()
- { int l,r,comp=0,max,min,p=0,pmax=0,cm=0;
- f>>n;
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- f>>a[i][j];
- for(k=1;k<=n;k++)
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- if(a[i][j]==0&&i!=k&&j!=k)
- a[i][j]=a[i][k]*a[k][j];
- do{
- k=neviz();viz[k]++;
- l=0;max=0;min=1000;
- for(i=1;i<=10000;i++)
- viz2[i]=0;
- for(i=1;i<=n;i++)
- if(a[i][k]==1&&viz[i]==0)
- {
- viz2[i]++;
- if(i<=min)
- min=i;
- if(i>=max)
- max=i;
- }
- r=0;
- for(j=1;j<=n;j++)
- if(a[k][j]==1&&viz[j]==0)
- {
- viz2[j]++;
- if(j<=min)
- min=j;
- if(j>=max)
- max=j;
- }
- comp++;p=1;g[comp][1]=k;
- for(i=min;i<=max;i++)
- if(viz2[i]==2)
- {
- g[comp][++p]=i;
- viz[i]++;
- if(p>=pmax)
- {pmax=p;cm=comp;}
- }
- }while(neviz());
- for(i=1;i<=comp;i++)
- {for(j=1;j<=pmax;j++)
- if(g[i][j]!=0)
- cout<<g[i][j]<<' ';
- cout<<endl;
- }
- cout<<"Componenta de lungime maxima este ";
- for(i=1;i<=pmax;i++)
- if(g[cm][i]!=0)
- cout<<g[cm][i]<<' ';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement