#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main(){
return 0;
}
#undef main
#define ListNode dummy_ListNode
#define TreeNode dummy_TreeNode
struct ListNode{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL){
}
}
;
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL){
}
}
;
#undef ListNode
#undef TreeNode
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
int i;
vector<ListNode*> nx;
for(i=(0);i<(head.size());i++){
if(head[i] == NULL){
return true;
}
}
if(root==NULL){
return false;
}
nx.push_back(top);
for(i=(0);i<(head.size());i++){
if(head[i]->val == root->val){
nx.push_back(head[i]->next);
}
}
return solve(top, nx, root->left) || solve(top, nx, root->right);
}
class Solution{
public:
bool isSubPath(ListNode* head, TreeNode* root){
vector<ListNode*> hoge;
hoge.push_back(head);
return solve(head, hoge, root);
}
}
;
// cLay varsion 20200308-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// #define ListNode dummy_ListNode
// #define TreeNode dummy_TreeNode
// struct ListNode {
// int val;
// ListNode *next;
// ListNode(int x) : val(x), next(NULL) {}
// };
// struct TreeNode {
// int val;
// TreeNode *left;
// TreeNode *right;
// TreeNode(int x) : val(x), left(NULL), right(NULL) {}
// };
// #undef ListNode
// #undef TreeNode
//
// bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
// vector<ListNode*> nx;
// rep(i,head.size()) if(head[i] == NULL) return true;
// if(root==NULL) return false;
//
// nx.push_back(top);
// rep(i,head.size()) if(head[i]->val == root->val) nx.push_back(head[i]->next);
//
// return solve(top, nx, root->left) || solve(top, nx, root->right);
// }
//
// class Solution {
// public:
// bool isSubPath(ListNode* head, TreeNode* root) {
// vector<ListNode*> hoge;
// hoge.push_back(head);
// return solve(head, hoge, root);
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KI2RlZmluZSBMaXN0Tm9kZSBkdW1teV9MaXN0Tm9kZQojZGVmaW5lIFRyZWVOb2RlIGR1bW15X1RyZWVOb2RlCnN0cnVjdCBMaXN0Tm9kZXsKICBpbnQgdmFsOwogIExpc3ROb2RlICpuZXh0OwogIExpc3ROb2RlKGludCB4KSA6IHZhbCh4KSwgbmV4dChOVUxMKXsKICB9Cn0KOwpzdHJ1Y3QgVHJlZU5vZGV7CiAgaW50IHZhbDsKICBUcmVlTm9kZSAqbGVmdDsKICBUcmVlTm9kZSAqcmlnaHQ7CiAgVHJlZU5vZGUoaW50IHgpIDogdmFsKHgpLCBsZWZ0KE5VTEwpLCByaWdodChOVUxMKXsKICB9Cn0KOwojdW5kZWYgTGlzdE5vZGUKI3VuZGVmIFRyZWVOb2RlCmJvb2wgc29sdmUoTGlzdE5vZGUqIHRvcCwgdmVjdG9yPExpc3ROb2RlKj4gaGVhZCwgVHJlZU5vZGUgKnJvb3QpewogIGludCBpOwogIHZlY3RvcjxMaXN0Tm9kZSo+IG54OwogIGZvcihpPSgwKTtpPChoZWFkLnNpemUoKSk7aSsrKXsKICAgIGlmKGhlYWRbaV0gPT0gTlVMTCl7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KICBpZihyb290PT1OVUxMKXsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgbngucHVzaF9iYWNrKHRvcCk7CiAgZm9yKGk9KDApO2k8KGhlYWQuc2l6ZSgpKTtpKyspewogICAgaWYoaGVhZFtpXS0+dmFsID09IHJvb3QtPnZhbCl7CiAgICAgIG54LnB1c2hfYmFjayhoZWFkW2ldLT5uZXh0KTsKICAgIH0KICB9CiAgcmV0dXJuIHNvbHZlKHRvcCwgbngsIHJvb3QtPmxlZnQpIHx8IHNvbHZlKHRvcCwgbngsIHJvb3QtPnJpZ2h0KTsKfQpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgYm9vbCBpc1N1YlBhdGgoTGlzdE5vZGUqIGhlYWQsIFRyZWVOb2RlKiByb290KXsKICAgIHZlY3RvcjxMaXN0Tm9kZSo+IGhvZ2U7CiAgICBob2dlLnB1c2hfYmFjayhoZWFkKTsKICAgIHJldHVybiBzb2x2ZShoZWFkLCBob2dlLCByb290KTsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAyMDAzMDgtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyAjZGVmaW5lIExpc3ROb2RlIGR1bW15X0xpc3ROb2RlCi8vICNkZWZpbmUgVHJlZU5vZGUgZHVtbXlfVHJlZU5vZGUKLy8gc3RydWN0IExpc3ROb2RlIHsKLy8gICBpbnQgdmFsOwovLyAgIExpc3ROb2RlICpuZXh0OwovLyAgIExpc3ROb2RlKGludCB4KSA6IHZhbCh4KSwgbmV4dChOVUxMKSB7fQovLyB9OwovLyBzdHJ1Y3QgVHJlZU5vZGUgewovLyAgIGludCB2YWw7Ci8vICAgVHJlZU5vZGUgKmxlZnQ7Ci8vICAgVHJlZU5vZGUgKnJpZ2h0OwovLyAgIFRyZWVOb2RlKGludCB4KSA6IHZhbCh4KSwgbGVmdChOVUxMKSwgcmlnaHQoTlVMTCkge30KLy8gfTsKLy8gI3VuZGVmIExpc3ROb2RlCi8vICN1bmRlZiBUcmVlTm9kZQovLyAKLy8gYm9vbCBzb2x2ZShMaXN0Tm9kZSogdG9wLCB2ZWN0b3I8TGlzdE5vZGUqPiBoZWFkLCBUcmVlTm9kZSAqcm9vdCl7Ci8vICAgdmVjdG9yPExpc3ROb2RlKj4gbng7Ci8vICAgcmVwKGksaGVhZC5zaXplKCkpIGlmKGhlYWRbaV0gPT0gTlVMTCkgcmV0dXJuIHRydWU7Ci8vICAgaWYocm9vdD09TlVMTCkgcmV0dXJuIGZhbHNlOwovLyAKLy8gICBueC5wdXNoX2JhY2sodG9wKTsKLy8gICByZXAoaSxoZWFkLnNpemUoKSkgaWYoaGVhZFtpXS0+dmFsID09IHJvb3QtPnZhbCkgbngucHVzaF9iYWNrKGhlYWRbaV0tPm5leHQpOwovLyAKLy8gICByZXR1cm4gc29sdmUodG9wLCBueCwgcm9vdC0+bGVmdCkgfHwgc29sdmUodG9wLCBueCwgcm9vdC0+cmlnaHQpOwovLyB9Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBib29sIGlzU3ViUGF0aChMaXN0Tm9kZSogaGVhZCwgVHJlZU5vZGUqIHJvb3QpIHsKLy8gICAgIHZlY3RvcjxMaXN0Tm9kZSo+IGhvZ2U7Ci8vICAgICBob2dlLnB1c2hfYmFjayhoZWFkKTsKLy8gICAgIHJldHVybiBzb2x2ZShoZWFkLCBob2dlLCByb290KTsKLy8gICB9Ci8vIH07Cg==
prog.cpp:28:12: error: ‘ListNode’ was not declared in this scope
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~~~~~
prog.cpp:28:12: note: suggested alternative: ‘fesetmode’
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~~~~~
fesetmode
prog.cpp:28:22: error: ‘top’ was not declared in this scope
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~
prog.cpp:28:34: error: ‘ListNode’ was not declared in this scope
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~~~~~
prog.cpp:28:34: note: suggested alternative: ‘fesetmode’
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~~~~~
fesetmode
prog.cpp:28:43: error: template argument 1 is invalid
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^
prog.cpp:28:43: error: template argument 2 is invalid
prog.cpp:28:51: error: ‘TreeNode’ was not declared in this scope
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~~~~~
prog.cpp:28:51: note: suggested alternative: ‘remove’
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~~~~~
remove
prog.cpp:28:61: error: ‘root’ was not declared in this scope
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~
prog.cpp:28:61: note: suggested alternative: ‘rint’
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^~~~
rint
prog.cpp:28:65: error: expression list treated as compound expression in initializer [-fpermissive]
bool solve(ListNode* top, vector<ListNode*> head, TreeNode *root){
^
prog.cpp:49:18: error: ‘ListNode’ has not been declared
bool isSubPath(ListNode* head, TreeNode* root){
^~~~~~~~
prog.cpp:49:34: error: ‘TreeNode’ has not been declared
bool isSubPath(ListNode* head, TreeNode* root){
^~~~~~~~
prog.cpp: In member function ‘bool Solution::isSubPath(int*, int*)’:
prog.cpp:50:12: error: ‘ListNode’ was not declared in this scope
vector<ListNode*> hoge;
^~~~~~~~
prog.cpp:50:12: note: suggested alternative: ‘fesetmode’
vector<ListNode*> hoge;
^~~~~~~~
fesetmode
prog.cpp:50:21: error: template argument 1 is invalid
vector<ListNode*> hoge;
^
prog.cpp:50:21: error: template argument 2 is invalid
prog.cpp:51:10: error: request for member ‘push_back’ in ‘hoge’, which is of non-class type ‘int’
hoge.push_back(head);
^~~~~~~~~
prog.cpp:52:34: error: ‘solve’ cannot be used as a function
return solve(head, hoge, root);
^