fork(1) download
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. int dirx[4]={0,1,0,-1};
  5. int diry[4]={1,0,-1,0};
  6. bool in(int x,int y,int n,int m){
  7. if(x<0 or x>=n or y<0 or y>=m) return true;
  8. return false;
  9. }
  10. int bfs(int x,int y,vector<vector<int>> &v,int c,int n,int m){
  11.  
  12. if(x<0 or x>=n or y<0 or y>=m) return 0;
  13. cout<<x<<' '<<y;
  14. bool yes=true;
  15. for(int i=0;i<n;i++){
  16. for(int j=0;j<m;j++){
  17. if(v[i][j]==-1) yes=false;
  18. }
  19. }
  20. if(yes) return 1;
  21. int sum=0;
  22. for(int i=0;i<4;i++){
  23. for(int j=1;j<=c;j++){
  24. if(in(x+dirx[i],y+diry[i],n,m)) v[x+dirx[i]][y+diry[i]]=j;
  25. bool hi=true;
  26. for(int k=0;k<4;k++){
  27. if(v[x+dirx[k]+dirx[i]][y+diry[y]+diry[i]]==j and in(x+dirx[k]+dirx[i],y+diry[y]+diry[i],n,m)){
  28. hi=false;
  29. }
  30. }
  31. if(hi) sum+=bfs(x+dirx[i],y+diry[i],v,c,n,m);
  32. v[x+dirx[i]][y+diry[i]]=-1;
  33. }
  34. }
  35. return sum;
  36. }
  37. int main(){
  38. int t;
  39. cin>>t;
  40. while(t--){
  41. int n,m,c;
  42. cin>>n>>m>>c;
  43. vector<vector<int> > v;
  44. for(int i=0;i<n;i++){
  45. for(int j=0;j<m;j++){
  46. v[i].push_back(-1);
  47. }
  48. }
  49. cout<<bfs(0,0,v,c,n,m)<<'\n';
  50. }
  51. }
Runtime error #stdin #stdout 0s 15240KB
stdin
2
2 2 3
5 2 2
stdout
Standard output is empty