Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- vector<string> res;
- vector<string> s;
- char mc[101][101];
- bool visited[101][101];
- int xqX[] = {0,0,1,1,1,-1,-1,-1};
- int xqY[] = {1,-1,0,1,-1,0,1,-1};
- int k,m,n;
- void Try(int row, int col, string t){
- visited[row][col] = true;
- t+=mc[row][col];
- for(int i=0;i<s.size();i++){
- if (s[i] == t){
- res.push_back(t);
- break;
- }
- }
- for(int i=0;i<8;i++){
- int r = row + xqX[i];
- int c = col + xqY[i];
- if (r > 0 && r <= m && c > 0 && c <= n && visited[r][c] == false){
- Try(r,c,t);
- }
- }
- t.pop_back();
- visited[row][col] = false;
- }
- void clear(){
- res.clear();
- s.clear();
- for(int i=0;i<101;i++){
- for(int j=0;j<101;j++){
- visited[i][j] = false;
- }
- }
- }
- void process(){
- cin >> k >> m >> n;
- s.resize(k);
- for(int i=0;i<k;i++) cin >> s[i];
- for(int i=1;i<=m;i++){
- for(int j=1;j<=n;j++){
- cin >> mc[i][j];
- }
- }
- string t="";
- for(int i=1;i<=m;i++){
- for(int j=1;j<=n;j++){
- Try(i,j,t);
- }
- }
- if ( !res.size() ){
- cout << -1 << endl;
- return;
- }
- for( auto z: res){
- cout << z << " ";
- }
- cout << endl;
- }
- int main(){
- int T;
- cin >> T;
- while(T--) process();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement