4fd800b3a8 2011-02-23 kinaba: #include <iostream> 4fd800b3a8 2011-02-23 kinaba: #include <sstream> 4fd800b3a8 2011-02-23 kinaba: #include <iomanip> 4fd800b3a8 2011-02-23 kinaba: #include <vector> 4fd800b3a8 2011-02-23 kinaba: #include <string> 4fd800b3a8 2011-02-23 kinaba: #include <map> 4fd800b3a8 2011-02-23 kinaba: #include <set> 4fd800b3a8 2011-02-23 kinaba: #include <algorithm> 4fd800b3a8 2011-02-23 kinaba: #include <numeric> 4fd800b3a8 2011-02-23 kinaba: #include <iterator> 4fd800b3a8 2011-02-23 kinaba: #include <functional> 4fd800b3a8 2011-02-23 kinaba: #include <complex> 4fd800b3a8 2011-02-23 kinaba: #include <queue> 4fd800b3a8 2011-02-23 kinaba: #include <stack> 4fd800b3a8 2011-02-23 kinaba: #include <cmath> 4fd800b3a8 2011-02-23 kinaba: #include <cassert> 4fd800b3a8 2011-02-23 kinaba: #include <cstring> 4fd800b3a8 2011-02-23 kinaba: using namespace std; 4fd800b3a8 2011-02-23 kinaba: typedef long long LL; 4fd800b3a8 2011-02-23 kinaba: typedef complex<double> CMP; 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: template<typename T> 4fd800b3a8 2011-02-23 kinaba: struct DP3 4fd800b3a8 2011-02-23 kinaba: { 4fd800b3a8 2011-02-23 kinaba: int N1, N2, N3; 4fd800b3a8 2011-02-23 kinaba: vector<T> data; 4fd800b3a8 2011-02-23 kinaba: DP3(){} 4fd800b3a8 2011-02-23 kinaba: DP3(int N1, int N2, int N3, const T& t = T()) 4fd800b3a8 2011-02-23 kinaba: : N1(N1), N2(N2), N3(N3), data(N1*N2*N3, t) { assert(data.size()*sizeof(T)<(1<<26)); } 4fd800b3a8 2011-02-23 kinaba: T& operator()(int i1, int i2, int i3) 4fd800b3a8 2011-02-23 kinaba: { return data[ ((i1*N2)+i2)*N3+i3 ]; } 4fd800b3a8 2011-02-23 kinaba: void swap(DP3& rhs) 4fd800b3a8 2011-02-23 kinaba: { data.swap(rhs.data); } 4fd800b3a8 2011-02-23 kinaba: }; 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: class GameWithGraphAndTree { public: 4fd800b3a8 2011-02-23 kinaba: vector<string> graph; 4fd800b3a8 2011-02-23 kinaba: vector< vector<int> > children; 4fd800b3a8 2011-02-23 kinaba: vector<int> subtree_size; 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: int calc(vector <string> graph_, vector <string> tree_) 4fd800b3a8 2011-02-23 kinaba: { 4fd800b3a8 2011-02-23 kinaba: int N = graph_.size(); 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: graph = graph_; 4fd800b3a8 2011-02-23 kinaba: children.resize(N); 4fd800b3a8 2011-02-23 kinaba: subtree_size.resize(N); 4fd800b3a8 2011-02-23 kinaba: computeChildren(-1, 0, tree_); 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: memo = DP3<LL>(N,N,1<<N,-1); 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: LL answer = 0; 4fd800b3a8 2011-02-23 kinaba: for(int gv=0; gv<graph.size(); ++gv) 4fd800b3a8 2011-02-23 kinaba: answer += vertical(0, gv, (1<<N)-1); 4fd800b3a8 2011-02-23 kinaba: return int(answer % 1000000007); 4fd800b3a8 2011-02-23 kinaba: } 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: void computeChildren(int tparent, int tv, const vector<string>& tree) 4fd800b3a8 2011-02-23 kinaba: { 4fd800b3a8 2011-02-23 kinaba: subtree_size[tv] = 1; 4fd800b3a8 2011-02-23 kinaba: for(int tc=0; tc<tree.size(); ++tc) 4fd800b3a8 2011-02-23 kinaba: if( tree[tv][tc] == 'Y' && tc!=tparent ) { 4fd800b3a8 2011-02-23 kinaba: children[tv].push_back(tc); 4fd800b3a8 2011-02-23 kinaba: computeChildren(tv, tc, tree); 4fd800b3a8 2011-02-23 kinaba: subtree_size[tv] += subtree_size[tc]; 4fd800b3a8 2011-02-23 kinaba: } 4fd800b3a8 2011-02-23 kinaba: } 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: LL vertical(int tv, int gv, int mask) 4fd800b3a8 2011-02-23 kinaba: { 4fd800b3a8 2011-02-23 kinaba: return horizontal(tv, gv, mask&~(1<<gv), 0); 4fd800b3a8 2011-02-23 kinaba: } 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: DP3<LL> memo; 4fd800b3a8 2011-02-23 kinaba: LL horizontal(int tv, int gv, int mask, int i) 4fd800b3a8 2011-02-23 kinaba: { 4fd800b3a8 2011-02-23 kinaba: if( i == children[tv].size() ) 4fd800b3a8 2011-02-23 kinaba: return 1; 4fd800b3a8 2011-02-23 kinaba: int tu = children[tv][i]; 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: if( memo(tv,gv,mask) >= 0 ) 4fd800b3a8 2011-02-23 kinaba: return memo(tv,gv,mask); 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: LL answer = 0; 4fd800b3a8 2011-02-23 kinaba: for(int subset=mask; subset; subset=(subset-1)&mask) 4fd800b3a8 2011-02-23 kinaba: if( __builtin_popcount(subset) == subtree_size[tu] ) 4fd800b3a8 2011-02-23 kinaba: for(int gu=0; (1<<gu)<=subset; ++gu) 4fd800b3a8 2011-02-23 kinaba: if( graph[gv][gu]=='Y' && ((1<<gu)&subset) ) 4fd800b3a8 2011-02-23 kinaba: answer += vertical(tu, gu, subset) * horizontal(tv, gv, mask&~subset, i+1); 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: return memo(tv,gv,mask) = answer % 1000000007; 4fd800b3a8 2011-02-23 kinaba: } 4fd800b3a8 2011-02-23 kinaba: }; 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: // BEGIN CUT HERE 4fd800b3a8 2011-02-23 kinaba: #include <ctime> 4fd800b3a8 2011-02-23 kinaba: double start_time; string timer() 4fd800b3a8 2011-02-23 kinaba: { ostringstream os; os << " (" << int((clock()-start_time)/CLOCKS_PER_SEC*1000) << " msec)"; return os.str(); } 4fd800b3a8 2011-02-23 kinaba: template<typename T> ostream& operator<<(ostream& os, const vector<T>& v) 4fd800b3a8 2011-02-23 kinaba: { os << "{ "; 4fd800b3a8 2011-02-23 kinaba: for(typename vector<T>::const_iterator it=v.begin(); it!=v.end(); ++it) 4fd800b3a8 2011-02-23 kinaba: os << '\"' << *it << '\"' << (it+1==v.end() ? "" : ", "); os << " }"; return os; } 4fd800b3a8 2011-02-23 kinaba: void verify_case(const int& Expected, const int& Received) { 4fd800b3a8 2011-02-23 kinaba: bool ok = (Expected == Received); 4fd800b3a8 2011-02-23 kinaba: if(ok) cerr << "PASSED" << timer() << endl; else { cerr << "FAILED" << timer() << endl; 4fd800b3a8 2011-02-23 kinaba: cerr << "\to: \"" << Expected << '\"' << endl << "\tx: \"" << Received << '\"' << endl; } } 4fd800b3a8 2011-02-23 kinaba: #define CASE(N) {cerr << "Test Case #" << N << "..." << flush; start_time=clock(); 4fd800b3a8 2011-02-23 kinaba: #define END verify_case(_, GameWithGraphAndTree().calc(graph, tree));} 4fd800b3a8 2011-02-23 kinaba: int main(){ 4fd800b3a8 2011-02-23 kinaba: 4fd800b3a8 2011-02-23 kinaba: CASE(0) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"NYN", 4fd800b3a8 2011-02-23 kinaba: "YNY", 4fd800b3a8 2011-02-23 kinaba: "NYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"NYY", 4fd800b3a8 2011-02-23 kinaba: "YNN", 4fd800b3a8 2011-02-23 kinaba: "YNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 2; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(1) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"NYNNN", 4fd800b3a8 2011-02-23 kinaba: "YNYYY", 4fd800b3a8 2011-02-23 kinaba: "NYNYY", 4fd800b3a8 2011-02-23 kinaba: "NYYNY", 4fd800b3a8 2011-02-23 kinaba: "NYYYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"NYNNN", 4fd800b3a8 2011-02-23 kinaba: "YNYNN", 4fd800b3a8 2011-02-23 kinaba: "NYNYN", 4fd800b3a8 2011-02-23 kinaba: "NNYNY", 4fd800b3a8 2011-02-23 kinaba: "NNNYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 12; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(2) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"NYNNNY", 4fd800b3a8 2011-02-23 kinaba: "YNYNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNYNN", 4fd800b3a8 2011-02-23 kinaba: "NNYNYN", 4fd800b3a8 2011-02-23 kinaba: "NNNYNY", 4fd800b3a8 2011-02-23 kinaba: "YNNNYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"NYNNYN", 4fd800b3a8 2011-02-23 kinaba: "YNNYNY", 4fd800b3a8 2011-02-23 kinaba: "NNNNYN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNYNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 0; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(3) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"NYNNYN", 4fd800b3a8 2011-02-23 kinaba: "YNNYNY", 4fd800b3a8 2011-02-23 kinaba: "NNNNYN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNYNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"NNNYYN", 4fd800b3a8 2011-02-23 kinaba: "NNYNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNNYY", 4fd800b3a8 2011-02-23 kinaba: "YNNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNYNNN", 4fd800b3a8 2011-02-23 kinaba: "NNYNNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 2; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(4) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"NYNNNYNNY", 4fd800b3a8 2011-02-23 kinaba: "YNNNNNNYN", 4fd800b3a8 2011-02-23 kinaba: "NNNNYYNYY", 4fd800b3a8 2011-02-23 kinaba: "NNNNNYNNY", 4fd800b3a8 2011-02-23 kinaba: "NNYNNNYNY", 4fd800b3a8 2011-02-23 kinaba: "YNYYNNNYN", 4fd800b3a8 2011-02-23 kinaba: "NNNNYNNYN", 4fd800b3a8 2011-02-23 kinaba: "NYYNNYYNN", 4fd800b3a8 2011-02-23 kinaba: "YNYYYNNNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"NNYNNNYYN", 4fd800b3a8 2011-02-23 kinaba: "NNNNYNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNYNN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNNNYY", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNNY", 4fd800b3a8 2011-02-23 kinaba: "YNNYNNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNNNYNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNYYNNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 90; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(5) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"N"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"N"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 1; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(6) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = { 4fd800b3a8 2011-02-23 kinaba: "NYYYYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YNYYYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYNYYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYNYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYNYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYNYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYNYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYNYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYNYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYNYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYNYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYYNYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYYYNY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYYYYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = { 4fd800b3a8 2011-02-23 kinaba: "NYNNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNYNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNYNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNYNYNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNYNYNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNYNYNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNYNYNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNYNYNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNYNYNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNNYNYNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNNNYNYNN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNNNNYNYN", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNNNNNYNY", 4fd800b3a8 2011-02-23 kinaba: "NNNNNNNNNNNNYN", 4fd800b3a8 2011-02-23 kinaba: }; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 178290591; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(7) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = { 4fd800b3a8 2011-02-23 kinaba: "NYYYYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YNYYYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYNYYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYNYYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYNYYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYNYYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYNYYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYNYYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYNYYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYNYYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYNYYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYYNYY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYYYNY", 4fd800b3a8 2011-02-23 kinaba: "YYYYYYYYYYYYYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = { 4fd800b3a8 2011-02-23 kinaba: "NYYYNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNNNYYYNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNNNNNNYYYNNNN", 4fd800b3a8 2011-02-23 kinaba: "YNNNNNNNNNYYYY", 4fd800b3a8 2011-02-23 kinaba: "NYNNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NYNNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNYNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNYNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNYNNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNYNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNYNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNYNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: "NNNYNNNNNNNNNN", 4fd800b3a8 2011-02-23 kinaba: }; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 178290591; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: CASE(8) 4fd800b3a8 2011-02-23 kinaba: string graph_[] = {"NYYYYYYYYYYYYY", "YNYYYYYYYYYYYY", "YYNYYYYYYYYYYY", "YYYNYYYYYYYYYY", "YYYYNYYYYYYYYY", "YYYYYNYYYYYYYY", "YYYYYYNYYYYYYY", "YYYYYYYNYYYYYY", "YYYYYYYYNYYYYY", "YYYYYYYYYNYYYY", "YYYYYYYYYYNYYY", "YYYYYYYYYYYNYY", "YYYYYYYYYYYYNY", "YYYYYYYYYYYYYN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> graph(graph_, graph_+sizeof(graph_)/sizeof(*graph_)); 4fd800b3a8 2011-02-23 kinaba: string tree_[] = {"NYYYYYYYYYYYYY", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN", "YNNNNNNNNNNNNN"}; 4fd800b3a8 2011-02-23 kinaba: vector <string> tree(tree_, tree_+sizeof(tree_)/sizeof(*tree_)); 4fd800b3a8 2011-02-23 kinaba: int _ = 178290591; 4fd800b3a8 2011-02-23 kinaba: END 4fd800b3a8 2011-02-23 kinaba: } 4fd800b3a8 2011-02-23 kinaba: // END CUT HERE