Advertisement
monyca98

inchidere tranzitiva

May 25th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<vector>
  4. #define max_size 1000
  5. using namespace std;
  6. vector<int> g[max_size];
  7. int n,m;
  8. vector<int> t[max_size];
  9. void read()
  10. {
  11.     ifstream in("file.txt");
  12.     if(in.is_open())
  13.     {
  14.         in>>n>>m;
  15.         for(int i=0;i<=n;i++)
  16.             g[i].assign(n+1,0);
  17.         int x,y;
  18.         for(int i=0;i<m;i++)
  19.         {
  20.             in>>x>>y;
  21.             g[x][y]=1;
  22.             g[y][x]=1;
  23.         }
  24.     }
  25.     else cout<<"unable to open the file\n";
  26.  
  27. }
  28. void inchidere_tranzitiva()
  29. {
  30.     for(int i=1;i<=n;i++)
  31.         t[i].assign(n+1,0);
  32.  
  33.     for(int i=1;i<=n;i++)
  34.        for(int j=1;j<=n;j++)
  35.         if(i==j || g[i][j]==1)
  36.             t[i][j]=1;
  37.         else
  38.             t[i][j]=0;
  39.  
  40.     for(int k=1;k<=n;k++)
  41.         for(int i=1;i<=n;i++)
  42.             for(int j=1;j<=n;j++)
  43.                 if(t[i][k]==1 && t[k][j]==1)
  44.                 t[i][j]=1;
  45.  
  46. }
  47. void print_()
  48. {
  49.     for(int i=1;i<=n;i++)
  50.     {
  51.         for(int j=1;j<=n;j++)
  52.             cout<<t[i][j]<<" ";
  53.         cout<<endl;
  54.     }
  55. }
  56. int main()
  57. {
  58.     read();
  59.     inchidere_tranzitiva();
  60.     print_();
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement