Example #1
0
File: 656.cpp Project: waiwai444/oj
bool bfs(command_seq *result_com)
{
    int i;
    sq.init();
    status ss, ss2;
    ss.cs.com_num = 0;
    for(i = 0; i < n; i++)
    {
        ss.st.top = 0;
        ss.st.value[i][0] = x[i];
    }
    if(is_finished(ss.st))
    {
        *result_com = ss.cs;
        return true;
    }
    sq.push(ss);
    
    while(!sq.empty())
    {
        ss = sq.peek_front();
        sq.pop();
        for(i = 0; i < 5; i++)
        {
            ss2 = ss;
            if((*op_set[i])(&ss2.cs, &ss2.st))
            {
                if(is_finished(ss2.st))
                {
                    *result_com = ss2.cs;
                    return true;
                }
                if(ss2.cs.com_num < MAX_COM)
                    sq.push(ss2);
            }
        }
    }
    
    return false;
}