UnKoder #07 A AB Warp

2015/06/20 (Sat) hackerrank UnKoder BFS

問題

問題文

方針

思考停止 BFS.

実装

signed main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    string s;
    cin >> s;
    int n = s.size();
    queue<int> q;
    q.push(0);
    int d[60] = {};
    rep(i,60) d[i] = 10000;
    d[0] = 0;
    int ans = -1;
    while(q.size()){
        int p = q.front(); q.pop();
        if(p==n-1){
            ans = d[p];
            break;
        }
        rep(i,n){
            if(s[i]==s[p] || i==p+1 || i==p-1){
                if(d[i] > d[p]+1){
                    d[i] = d[p]+1;
                    q.push(i);
                }
            }
        }
    }
    cout << ans << endl;
}