Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream f("date.in");
  5. int n,a[101][101],p[101],s[101],x=0,y,k,sol[101],r;
  6. void citire()
  7. {
  8. int i,j;
  9. f>>n;
  10. while(f>>i>>j)a[i][j]=1;
  11.  
  12. //for(i=1;i<=n;i++){for(j=1;j<=n;j++)cout<<a[i][j]<<' ';cout<<endl;}
  13. }
  14. void afisare()
  15. {
  16. int i,j;
  17. for(i=1;i<=n;i++){for(j=1;j<=n;j++)cout<<a[i][j]<<' ';cout<<endl;}
  18. cout<<endl<<endl;
  19.  
  20. }
  21. void drum()
  22. {
  23. int i,j,k;
  24. for(k=1;k<=n;k++)
  25. for(i=1;i<=n;i++)
  26. for(j=1;j<=n;j++)
  27. if(a[i][j]==0)a[i][j]=a[i][k]*a[k][j];
  28. }
  29. void init()
  30. {
  31. int i;
  32. for(i=1;i<=n;i++)
  33. {
  34. s[i]=0;
  35. p[i]=0;
  36. k=0;
  37. sol[i]=0;
  38. }
  39. x=0;y=0;r=0;
  40. }
  41.  
  42. void afisares()
  43. {
  44. int i;
  45. for(i=1;i<=x;i++)cout<<s[i]<<' ';
  46. cout<<endl;
  47. }
  48. void afisarep()
  49. {
  50. int i;
  51. for(i=1;i<=y;i++)cout<<p[i]<<' ';
  52. cout<<endl;
  53.  
  54. }
  55. void succesor(int k)
  56. {
  57. int i,j;
  58. for(j=1;j<=n;j++)
  59. if(a[k][j]!=0)
  60. {
  61. x++;
  62. s[x]=j;
  63.  
  64. }
  65. }
  66.  
  67. void predecesor(int k)
  68. {
  69. int i,j;
  70. for(i=1;i<=n;i++)
  71. if(a[i][k]!=0)
  72. {
  73. y++;
  74. p[y]=i;
  75.  
  76. }
  77.  
  78. }
  79.  
  80. void schimbare1(int k)
  81. {
  82. int i,j,r=0;
  83. for(i=1;i<=x;i++)
  84. for(j=1;j<=y;j++)
  85. if(s[i]==p[j])
  86. {
  87. r++;
  88. sol[r]=s[i];
  89. }
  90. cout<<k<<": ";
  91. for(i=1;i<=r;i++)if(sol[i]!=0)cout<<sol[i]<<' ';
  92. cout<<endl;
  93. }
  94. void reuniune(int k)
  95. {
  96. int i,j=0,gata=0;i=1;
  97. while(i<=r&&gata==0)
  98. {
  99. if(sol[i]==i)
  100. gata=1;
  101. i++;
  102. }j=0;
  103. if(gata==0)
  104. while(i<=r&&j==0)if(sol[i]==0)
  105. {
  106. sol[i]=k;j=1;
  107. }
  108.  
  109. }
  110.  
  111. void rezolvare()
  112. {
  113. int i,j;
  114. for(i=1;i<=n;i++)
  115. {
  116. init();
  117. succesor(i);
  118. predecesor(i);
  119. schimbare1(i);
  120. reuniune(i);
  121. //schimbare2();
  122. }
  123.  
  124. }
  125. int main()
  126. {
  127. int i,j;
  128. citire();
  129. drum();
  130. afisare();
  131. rezolvare();
  132.  
  133.  
  134.  
  135. return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement