there's something called spoj forum, try posting it there.... secondly, ask whether ur algo is right or wrong, not the code
On Sat, Jul 23, 2011 at 4:51 PM, KK <kunalkapadi...@gmail.com> wrote: > www.spoj.pl/problems/SHOP > Its a pretty easy Q... But m not able to figure out any silly mistake > in my prog.. plzz help > > #include<iostream> > #include<vector> > #include<map> > #include<queue> > > using namespace std; > > char a[26][26]; > int si, sj, di, dj, rows, cols; > > void BFS(vector< vector<int> > &v, int si, int sj, int rows, int > cols); > int safe(vector< vector<int> > &v, int r, int c, int current, int > rows, int cols); > > int main() > { > freopen("input.txt", "r", stdin); > freopen("output.txt", "w", stdout); > > int si, sj; > while(1) > { > cin >> cols >> rows; > > if(rows == 0 && cols == 0) > break; > > vector<int> row(26, INT_MAX); > vector< vector<int> > final(26, row); > > for(int i=0; i<rows; i++) > for(int j=0; j<cols; j++) > { > cin >> a[i][j]; > if(a[i][j] == 'S') > { > si = i; sj = j; > } > else if(a[i][j] == 'D') > { > di = i; dj = j; > a[i][j] = '0'; > } > } > > BFS(final, si, sj, rows, cols); > cout << final[di][dj] << endl; > > /* > for(int i=0; i<rows; i++) > { > for(int j=0; j<cols; j++) > cout << final[i][j] << " "; > cout << endl; > } > cout << endl; > */ > } > return 0; > } > > void BFS(vector< vector<int> > &v, int si, int sj, int rows, int cols) > { > pair<int, int> p; > queue< pair<int, int> > q; > > q.push(make_pair(si, sj)); > v[si][sj] = 0; > > while(!q.empty()) > { > p = q.front(); q.pop(); > int current = v[p.first][p.second]; > > if(safe(v, p.first+1, p.second, current, rows, cols)) > q.push(make_pair(p.first+1, p.second)); > > if(safe(v, p.first-1, p.second, current, rows, cols)) > q.push(make_pair(p.first-1, p.second)); > > if(safe(v, p.first, p.second+1, current, rows, cols)) > q.push(make_pair(p.first, p.second+1)); > > if(safe(v, p.first, p.second-1, current, rows, cols)) > q.push(make_pair(p.first, p.second-1)); > > } > } > > int safe(vector< vector<int> > &v, int r, int c, int current, int > rows, int cols) > { > if(r >= 0 && r < rows && c >= 0 && c < cols && a[r][c] != 'X') > { > if(v[r][c] > current + a[r][c] - '0') > { > v[r][c] = current + a[r][c] - '0'; > return 1; > } > > } > return 0; > } > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.