File Annotation
Not logged in
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