Advertisement
jonator

bfs

Nov 23rd, 2014
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. Posicio bfs(int i, int j) {
  2.   bool trobat = false;
  3.   queue< Posicio > q;
  4.   q.push(Posicio(i, j));
  5.   Graf g (60, vector<pair<char,Posicio> > (60));
  6.   int primer = 0;
  7.   while (not q.empty()) {
  8.     Posicio pos = q.front(); q.pop();
  9.     if (quin_soldat(pos.x,pos.y) > 0)  {return g[pos.x][pos.y].second;}
  10.     if (valor_post(pos.x,pos.y) > 0) {return g[pos.x][pos.y].second;}
  11.     g[pos.x][pos.y].first = 'X';
  12.     for(int i=0; i<8; ++i)
  13.     {
  14.       int a = pos.x+X[i], b = pos.y+Y[i];
  15.       if(valid(a, b) and g[a][b].first != 'X' and (que(a,b) == GESPA or que(a,b) == BOSC)) {
  16.     q.push(Posicio(a, b));
  17.     if (primer < 8) {
  18.       g[a][b].second.x = a;
  19.       g[a][b].second.y = b;
  20.     } else {
  21.       g[a][b].second.x = g[pos.x][pos.y].second.x;
  22.       g[a][b].second.y = g[pos.x][pos.y].second.y;
  23.     }
  24.       }
  25.       ++primer;
  26.     }
  27.   }
  28.   return Posicio(-1,-1);
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement