Advertisement
ccbeginner

UVa Q399

Jan 2nd, 2020
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. //UVa Q399
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. bool fnd;
  6. int a;
  7. string puz[101][25];
  8. int surf[101][4];
  9. int ans[11][11];
  10. bool vis[101];
  11. void dfs(int depth){
  12.     if(depth == a*a){
  13.         fnd = 1;
  14.         return;
  15.     }
  16.     int x = depth/a+1, y = depth%a+1;
  17.     for(int i = 1; i <= a*a; ++i){
  18.         if(!vis[i] && surf[ans[x][y-1]][3] == -surf[i][1] && surf[ans[x-1][y]][2] == -surf[i][0]){
  19.             vis[i] = 1;
  20.             ans[x][y] = i;
  21.             dfs(depth+1);
  22.             vis[i] = 0;
  23.             if(fnd)return;
  24.         }
  25.     }
  26. }
  27.  
  28. int main(){
  29.     int t,b,c;
  30.     cin >> t;
  31.     while(t--){
  32.         fnd = false;
  33.         memset(ans, 0, sizeof(ans));
  34.         cin >> a >> b >> c;
  35.         for(int i = 1; i <= a*a; ++i){
  36.             cin.get();
  37.             for(int j = 0; j < b; ++j){
  38.                 getline(cin, puz[i][j]);
  39.             }
  40.             for(int j = 0; j < 4; ++j)cin >> surf[i][j];
  41.             cin.get();
  42.         }
  43.         dfs(0);
  44.         for(int i = 1; i <= a; ++i){
  45.             for(int j = 0; j < b; ++j){
  46.                 for(int k = 1; k <= a; ++k){
  47.                     cout << puz[ans[i][k]][j];
  48.                 }
  49.                 cout << endl;
  50.             }
  51.         }
  52.         if(t)cout << '\n';
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement