Advertisement
monyca98

moore

May 25th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. //moore
  2. //determina distantele minime de la un nod sursa la celelalte noduri
  3.  
  4. #include<iostream>
  5. #include<fstream>
  6. #include<vector>
  7. #include<queue>
  8. using namespace std;
  9.  
  10. vector<vector<int>> g;
  11. vector<int> dist;
  12. vector<bool>vis;
  13. int source,n,m;
  14.  queue<int> q;
  15.  
  16. void read()
  17. {
  18.     ifstream in("file.txt");
  19.     if(!in.is_open())
  20.         cout<<"unable to open the file\n";
  21.     else
  22.     {
  23.         in>>source;
  24.         in>>n>>m;
  25.         g.resize(n+1);
  26.         dist.assign(n+1,0);
  27.         vis.assign(n+1,false);
  28.         for(int i=0;i<=n;i++)
  29.             g[i].assign(n+1,0);
  30.         int x,y,w;
  31.         for(int i=0;i<m;i++)
  32.         {
  33.             in>>x>>y>>w;
  34.             g[x][y]=w;
  35.            // g[y][x]=w;
  36.         }
  37.     }
  38. }
  39. void moore()
  40. {
  41.     int curent;
  42.     dist[source]=0;
  43.     q.push(source);
  44.     vis[source]=true;
  45.     while(!q.empty())
  46.     {
  47.         curent=q.front();
  48.         q.pop();
  49.         for(int j=1;j<=n;j++)
  50.         {
  51.             if(!vis[j] && g[curent][j]!=0)
  52.             {
  53.  
  54.                 q.push(j);
  55.                 vis[j]=true;
  56.                 dist[j]=dist[curent]+1;
  57.             }
  58.         }
  59.     }
  60. }
  61. void print()
  62. {
  63.     cout<<"distantele de la nodul sursa "<<source<<":";
  64.     for(int i=1;i<=n;i++)
  65.         cout<<dist[i]<<" ";
  66. }
  67. int main()
  68. {
  69.     read();
  70.     moore();
  71.     print();
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement