Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void dfs(unordered_set<string>&dict, string s, vector<string>&ans, string res){
- if(s.size()==0){
- ans.push_back(res);
- return;
- }
- for(int i=1; i<=s.size(); i++){
- string sub = s.substr(0, i);
- if(dict.find(sub)!=dict.end()){
- dfs(dict, s.substr(i), ans, res +(res.size()?" "+s.substr(0, i):s.substr(0, i)));
- }
- }
- }
- void solve(){
- int n;
- cin >> n;
- unordered_set<string>dict;
- for(int i=0; i<n; i++){
- string ss;
- cin >> ss;
- dict.insert(ss);
- }
- string s;
- cin >> s;
- vector<string>ans;
- dfs(dict, s, ans, "");
- sort(ans.begin(), ans.end());
- for(int i=0; i<ans.size(); i++){
- cout<<"("<<ans[i]<<")";
- }
- cout<<endl;
- }
- int main() {
- //code
- int t;
- cin >> t;
- while(t--){
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement