AlexandruDu

ComponenteTareConexe

Feb 22nd, 2021
385
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int suc[50],pred[50], a[50][50], n, nrc;
  2. void citire(a[50][50],n)
  3.  { for(int i=1;i<=n;i++)
  4.    for(int j=1;J<=n;j++)
  5.       {cin>>a[i][j];
  6.        while(a[i][j]!=0 && a[i][j]!=1);
  7.              a[j][i]=a[i][j];
  8.       }
  9.  }
  10. void DFs(int nod)
  11. { int k;
  12. suc[nod]=nrc;
  13. for(k=1;k&lt;=n;k++)
  14. if (a[nod][k]==1 &amp;&amp; suc[k]==0)
  15. DFs(k);
  16. }
  17. void DFp(int nod)
  18. { int k;
  19. pred[nod]=nrc;
  20. for(k=1;k&lt;=n;k++)
  21. if (a[k][nod]==1 &amp;&amp; pred[k]==0)
  22. DFp(k);
  23. }
  24. void comptconex()
  25. { nrc=1;
  26. for(int i=1;i&lt;=n;i++)
  27. if( suc[i]==0) {
  28. suc[i]=nrc;
  29. DFs(i); DFp(i);
  30. for(int j =1;j&lt;=n;j++)
  31. if(suc[j]!=pred[j])
  32. suc[j]=pred[j]=0;
  33. nrc++;
  34. }
  35. }
  36. void afisareCompTareconexe()
  37. {
  38. for(int i=1;i&lt;nrc; i++)
  39. { cout&lt;&lt;”Componenta tare conexa ”&lt;&lt;i&lt;&lt;endl;
  40. for(int j=1; j&lt;=n;j++)
  41. if(suc[j]==i) cout&lt;&lt;j&lt;&lt;” ”;
  42. cout&lt;&lt;endl;}
  43. }
  44. int main(){ citire();
  45. comptconex();
  46. afisareCompTareconexe(); return 0;}
RAW Paste Data