Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- potential errors overflow due to limited size of queue
- wrong implementation of queue
- pipes written wrongly
- TEST CASES
- 12
- 5 6 2 1 3
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 2 2 3
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 1 4 3
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 1 2 3
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 1 1 3
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 1 1 0
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 2 2 10
- 0 0 5 3 6 0
- 0 0 2 3 1 6
- 3 3 1 3 7 3
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 1 5 10
- 0 0 5 3 6 0
- 0 0 2 3 1 6
- 3 3 1 3 7 3
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 2 1 3
- 0 0 5 3 6 0
- 0 0 2 0 2 0
- 3 3 1 3 7 0
- 0 0 0 0 0 0
- 0 0 0 0 0 0
- 5 6 2 2 6
- 3 0 0 0 0 3
- 2 0 0 0 0 6
- 1 3 4 1 3 1
- 2 0 2 0 0 2
- 0 0 4 3 1 1
- 5 6 2 2 6
- 3 0 0 0 0 3
- 2 0 0 0 5 6
- 1 3 4 1 1 1
- 2 0 2 0 0 2
- 0 0 4 3 1 1
- 50 50 0 0 20
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- OUTPUT
- 5
- 7
- 5
- 6
- -1
- -1
- 12
- 12
- 5
- 7
- 8
- 210
- */
- #include<iostream>
- using namespace std;
- struct node{
- int x;
- int y;
- int l;
- };
- node q[1000000];
- int front, back;
- void init(){
- front = back = 0;
- }
- node pop(){
- return q[front++];
- }
- void push(int x, int y, int l){
- q[back].x = x;
- q[back].y = y;
- q[back].l = l;
- back++;
- }
- bool empty(){
- return front == back;
- }
- int a[1000][1000];
- bool vis[1000][1000];
- int n,m,r,c,len;
- int ans;
- void init2(){
- for(int i = 0; i<1000; i++){
- for(int j =0; j<1000; j++){
- vis[i][j] = false;
- }
- }
- }
- bool valid(int x, int y){
- return (x>=0 && x<n && y>=0 && y<m && !vis[x][y]);
- }
- void solve(){
- if(a[r][c] == 0)return;
- ans = 1;
- vis[r][c] = true;
- push(r,c,1);
- while(!empty()){
- node temp = pop();
- int x = temp.x;
- int y = temp.y;
- int l = temp.l;
- // up 1 2 4 down 1 2 5 6 left 1 3 6 7 right 1 3 4 5
- //up jana h
- if(valid(x-1,y) && l+1 <= len)
- if(a[x-1][y] == 1 || a[x-1][y] ==2 || a[x-1][y] ==5 || a[x-1][y] ==6 )
- if(a[x][y] == 1 || a[x][y] == 2 || a[x][y] == 4 || a[x][y] == 7){
- vis[x-1][y] = true;
- push(x-1,y,l+1);
- ans++;
- }
- // down jana hai
- if(valid(x+1,y) && l+1 <= len)
- if(a[x+1][y] == 1 || a[x+1][y] ==2 || a[x+1][y] ==4 || a[x+1][y] ==7 )
- if(a[x][y] == 1 || a[x][y] == 2 || a[x][y] == 5 || a[x][y] == 6){
- vis[x+1][y] = true;
- push(x+1,y,l+1);
- ans++;
- }
- // left jana hai
- if(valid(x,y-1) && l+1 <= len)
- if(a[x][y-1] == 1 || a[x][y-1] ==3 || a[x][y-1] ==4 || a[x][y-1] ==5 )
- if(a[x][y] == 1 || a[x][y] == 3 || a[x][y] == 6 || a[x][y] == 7){
- vis[x][y-1] = true;
- push(x,y-1,l+1);
- ans++;
- }
- // right jana jai
- if(valid(x,y+1) && l+1 <= len)
- if(a[x][y+1] == 1 || a[x][y+1] ==3 || a[x][y+1] ==6 || a[x][y+1] ==7 )
- if(a[x][y] == 1 || a[x][y] == 3 || a[x][y] == 4 || a[x][y] == 5){
- vis[x][y+1] = true;
- push(x,y+1,l+1);
- ans++;
- }
- }
- }
- int main(){
- int t; cin>>t;
- while(t--){
- cin>>n>>m>>r>>c>>len;
- for(int i =0; i<n; i++){
- for(int j =0; j<m; j++){
- cin>>a[i][j];
- }
- }
- init();
- init2();
- ans = -1;
- solve();
- cout<<ans<<endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment