Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //UVa Q399
- #include <bits/stdc++.h>
- using namespace std;
- bool fnd;
- int a;
- string puz[101][25];
- int surf[101][4];
- int ans[11][11];
- bool vis[101];
- void dfs(int depth){
- if(depth == a*a){
- fnd = 1;
- return;
- }
- int x = depth/a+1, y = depth%a+1;
- for(int i = 1; i <= a*a; ++i){
- if(!vis[i] && surf[ans[x][y-1]][3] == -surf[i][1] && surf[ans[x-1][y]][2] == -surf[i][0]){
- vis[i] = 1;
- ans[x][y] = i;
- dfs(depth+1);
- vis[i] = 0;
- if(fnd)return;
- }
- }
- }
- int main(){
- int t,b,c;
- cin >> t;
- while(t--){
- fnd = false;
- memset(ans, 0, sizeof(ans));
- cin >> a >> b >> c;
- for(int i = 1; i <= a*a; ++i){
- cin.get();
- for(int j = 0; j < b; ++j){
- getline(cin, puz[i][j]);
- }
- for(int j = 0; j < 4; ++j)cin >> surf[i][j];
- cin.get();
- }
- dfs(0);
- for(int i = 1; i <= a; ++i){
- for(int j = 0; j < b; ++j){
- for(int k = 1; k <= a; ++k){
- cout << puz[ans[i][k]][j];
- }
- cout << endl;
- }
- }
- if(t)cout << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement