Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <fstream.h>
  2. #include <iostream.h>
  3. ifstream f("date.in");
  4. int a[100][100],n,i,j,k,g[100][100],viz[10000],viz2[10000];
  5. int neviz(){
  6.     for(i=1;i<=n;i++)
  7.         if(viz[i]==0)
  8.             return i;
  9.         return 0;
  10. }
  11. int main()
  12. {   int l,r,comp=0,max,min,p=0,pmax=0,cm=0;
  13.     f>>n;
  14.     for(i=1;i<=n;i++)
  15.         for(j=1;j<=n;j++)
  16.             f>>a[i][j];
  17.     for(k=1;k<=n;k++)
  18.         for(i=1;i<=n;i++)
  19.             for(j=1;j<=n;j++)
  20.                 if(a[i][j]==0&&i!=k&&j!=k)
  21.                     a[i][j]=a[i][k]*a[k][j];
  22.    
  23.                
  24.     do{
  25.         k=neviz();viz[k]++;
  26.         l=0;max=0;min=1000;
  27.         for(i=1;i<=10000;i++)
  28.             viz2[i]=0;
  29.         for(i=1;i<=n;i++)
  30.             if(a[i][k]==1&&viz[i]==0)
  31.             {
  32.                 viz2[i]++;
  33.                 if(i<=min)
  34.                     min=i;
  35.                 if(i>=max)
  36.                     max=i;
  37.             }
  38.         r=0;
  39.         for(j=1;j<=n;j++)
  40.             if(a[k][j]==1&&viz[j]==0)
  41.             {
  42.                 viz2[j]++;
  43.                 if(j<=min)
  44.                     min=j;
  45.                 if(j>=max)
  46.                     max=j;
  47.             }
  48.         comp++;p=1;g[comp][1]=k;
  49.         for(i=min;i<=max;i++)
  50.             if(viz2[i]==2)
  51.             {
  52.                 g[comp][++p]=i;
  53.                 viz[i]++;
  54.                 if(p>=pmax)
  55.                     {pmax=p;cm=comp;}
  56.             }
  57.         }while(neviz());
  58.     for(i=1;i<=comp;i++)
  59.         {for(j=1;j<=pmax;j++)
  60.             if(g[i][j]!=0)
  61.             cout<<g[i][j]<<' ';
  62.             cout<<endl;
  63.         }
  64.     cout<<"Componenta de lungime maxima este ";
  65.     for(i=1;i<=pmax;i++)
  66.         if(g[cm][i]!=0)
  67.             cout<<g[cm][i]<<' ';
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement