Advertisement
edutedu

grafuri orientate componente conexe

Feb 12th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. int suc[20],pred[20],nrc=1,n,a[10][10];
  6.  
  7. ifstream fin1("Arce.txt");
  8.  
  9. void CitireArce(int a[10][10],int &n)
  10. {
  11. int i,j;
  12. fin1>>n;
  13. while(fin1>>i>>j)
  14. a[i][j]=1;
  15. }
  16. void DF_ext(int nod)
  17. {
  18. suc[nod]=nrc;
  19. for(int i=1;i<=n;i++)
  20. {
  21. if (a[nod][i] && suc[i]==0)
  22. DF_ext(i);
  23. }
  24. }
  25. void DF_int(int nod)
  26. {
  27. pred[nod]=nrc;
  28. for(int i=1;i<=n;i++)
  29. {
  30. if (a[i][nod] && pred[i]==0)
  31. DF_int(i);
  32. }
  33. }
  34.  
  35. int main()
  36. {
  37.  
  38. CitireArce(a,n);
  39. for(int i=1;i<=n;i++)
  40. {
  41. if(pred[i]==0)
  42. {
  43. DF_ext(i);
  44. DF_int (i);
  45. for(int i=1;i<=n;i++)
  46. if(suc[i]!=pred[i])
  47. suc[i]=pred[i]=0;
  48. nrc++;
  49. }
  50. }
  51. nrc--;
  52. for(int i=1;i<=nrc;i++)
  53. {
  54. cout<<"Componenta "<<i<<" are nodurile: ";
  55. for(int j=1;j<=n;j++)
  56. if(suc[j]==i)
  57. cout<<j<<" ";
  58. cout<<endl;
  59.  
  60. }
  61.  
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement