Esempio n. 1
0
int SolveCodeJam(const char* szFileOut, const char* szFileIn)	{
	FILE* fp = fopen(szFileIn, "rt");
	if (fp == NULL)	{
		printf("Can't open Input file %s\n", szFileIn);
		return 0;
	}
	printf("Input file %s is opened\n", szFileIn);
	FILE* fpo = fopen(szFileOut, "wt");
	if (fp == NULL)	{
		printf("Can't open Output file %s\n", szFileOut);
		fclose(fp);
		return 0;
	}
	printf("Output file %s is opened\n", szFileOut);

	size_t T, M, N;
	fscanf(fp, "%u", &T);
	printf("Test Case = %d\n", T);	
	for(size_t t = 0; t < T; t++)	{
		fscanf(fp, "%u %u", &N, &M);
		printf("[%d], N = %d, M = %d\n", t, N, M);
		pTree pT = (pTree)malloc(sizeof(Tree)*N);
			
		pT->pParent = NULL;
#ifdef _DEBUG				
		pT->uTag = 1;
#endif
		pT--;

		for(size_t n = 1; n < N; n++)	{
			size_t n1, n2;
			fscanf(fp, "%u %u", &n1, &n2);
			pT[n2].pParent = pT + n1;
#ifdef _DEBUG				
			pT[n2].uTag = n2;
			pT[n1].uTag = n1;
#endif
		}
		for(size_t m = 0; m < M; m++)	{
			size_t m1, m2;
			int nRet = 1;
			fscanf(fp, "%u %u", &m1, &m2);
			if (m1 != 1 && m2 != 1)
				nRet = SolveCore(pT + m1, pT + m2);
			fprintf(fpo, "%d\n", nRet);
		}
		free(pT + 1);
	}
	fclose(fp);
	fclose(fpo);
	return 1;
}
Esempio n. 2
0
void SolveCube2::Solve()
{
	SolveCore();
	//verify
	for(int i=0;i<solve_length_;i++)
	{
		TakeMotion(corner_permutation_,corner_twist_,solve_[i]);
	}
	assert(IsOrigin());

	//output
	std::cout<<"solution:";
	for(int i=0;i<solve_length_;i++)
	{
		std::cout<<(int)solve_[i]<<",";
	}
	std::cout<<std::endl;

	//out,to single move
	int j=0;
	for(int i=0;i<solve_length_;i++)
	{
		if(solve_[i]%3==1)
		{
			solution_single_move_[j]=solve_[i]-1;
			solution_single_move_[j+1]=solve_[i]-1;
			j+=2;
		}
		else
		{
			solution_single_move_[j]=solve_[i];
			j++;
		}
	}
	solution_single_length_=j;
}