結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
cimjnuqy
|
| 提出日時 | 2016-04-18 20:00:59 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,301 bytes |
| コンパイル時間 | 595 ms |
| コンパイル使用メモリ | 73,312 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-04 13:52:01 |
| 合計ジャッジ時間 | 3,025 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 RE * 14 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>
using namespace std;
int
main()
{
int n;
cin >> n;
vector<int> road;
road.push_back(0);
road.push_back(1);
while (road.size() < n + 1) {
int m = road.size();
for (int i = 0; i < m; i++) {
if (road.size() == n + 1) {
break;
}
road.push_back(road[i] + 1);
}
}
//ここまでbit数を数えるため配列作りのもの。
//以下幅優先探索
deque<vector <int> > ways;
vector<int> way;
vector<int> v(n + 1, 0);
v[1] = 1;
way.push_back(1);
ways.push_back(way);
while (ways.size() > 0) {
way = ways.front();
ways.pop_front();
int l = way.back();
if (l == n) {
cout << v[l];
return 0;
}
if (0 < l + road[l] < n + 1 && v[l + road[l]] == 0) {
vector<int> newWay;
copy(way.begin(), way.end(), back_inserter(newWay));
newWay.push_back(l + road[l]);
ways.push_back(newWay);
v[l + road[l]] = v[l] + 1;
}
if (0 < l - road[l] < n + 1 && v[l - road[l]] == 0) {
vector<int> newWay;
copy(way.begin(), way.end(), back_inserter(newWay));
newWay.push_back(l - road[l]);
ways.push_back(newWay);
v[l - road[l]] = v[l] + 1;
}
}
cout << -1;
return 0;
}
cimjnuqy