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; }
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; }