提出 #41205263


ソースコード 拡げる

#include <atcoder/all>
using namespace atcoder;
#include <bits/stdc++.h>
#include <cassert>
using namespace std;
using ll = long long;
const double pi = 3.14159265359;
const ll INF = 1LL << 60;

template<class T> inline bool chmin(T& a, T b){ if (a > b){a = b; return true;} return false;}
template<class T> inline bool chmax(T& a, T b){ if (a < b){a = b; return true;} return false;}

//using mint = modint998244353;
//using mint = modint1000000007;
//using mint = modint;  // mint::set_mod(p); later
//using mint = static_modint<1000000009>;

int N, M;

void dijkstra(int st, const vector<vector<int>> &es, vector<ll> &ds)
{
  fill(ds.begin(), ds.end(), INF);

  priority_queue<
    pair<ll, int>,
    vector<pair<ll, int>>,
    greater<pair<ll, int>>> que;

  ds[st] = 0;
  que.push(make_pair(0, st));

  while(!que.empty()){
    auto [d, i] = que.top(); que.pop();

    if (d > ds[i]) continue;

    for (int j : es[i]){
      if (chmin(ds[j], ds[i] + 1)){
	que.push(make_pair(ds[i] + 1, j));
      }
    }
  }
}
    
vector<ll> dist, distr;
vector<vector<int>> edges, edgesr;

int main()
{
  cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);

  // Input
  cin >> N >> M;
  vector<string> s(N);
  for (auto &t : s) cin >> t;

  // Dijkstra from 0 and N-1
  dist.resize(N);
  distr.resize(N);
  edges.resize(N);
  edgesr.resize(N);

  for (int i = 0; i < N - 1; i++){
    for (int j = 0; j < M; j++){
      if (i + j + 1 < N && s[i][j] == '1'){
	edges[i].push_back(i + j + 1);
	edgesr[i + j + 1].push_back(i);
      }
    }
  }
  
  dijkstra(0, edges, dist);
  dijkstra(N-1, edgesr, distr);

  // Solve and Output
  for (int i = 1; i < N - 1; i++){
    ll ans = INF;
    for (int j = i - 1 - M; j < i; j++){
      if (j >= 0){
	for (int k : edges[j]){
	  if (k > i){
	    chmin(ans, dist[j] + distr[k] + 1);
	  }
	}
      }
    }

    if (ans == INF) cout << -1 << " ";
    else cout << ans << " ";
  }

  cout << endl;
  return 0;
}

提出情報

提出日時
問題 F - Teleporter and Closed off
ユーザ unnohideyuki
言語 C++ (GCC 9.2.1)
得点 500
コード長 2035 Byte
結果 AC
実行時間 97 ms
メモリ 28200 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 2
AC × 50
セット名 テストケース
Sample example_00.txt, example_01.txt
All colored_00.txt, colored_01.txt, colored_02.txt, colored_03.txt, colored_04.txt, colored_05.txt, colored_06.txt, colored_07.txt, colored_08.txt, colored_09.txt, colored_10.txt, colored_11.txt, colored_12.txt, colored_13.txt, colored_14.txt, colored_15.txt, colored_16.txt, colored_17.txt, colored_18.txt, colored_19.txt, colored_20.txt, colored_21.txt, colored_22.txt, colored_23.txt, colored_24.txt, colored_25.txt, example_00.txt, example_01.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt
ケース名 結果 実行時間 メモリ
colored_00.txt AC 70 ms 19772 KiB
colored_01.txt AC 82 ms 19808 KiB
colored_02.txt AC 81 ms 20052 KiB
colored_03.txt AC 73 ms 20368 KiB
colored_04.txt AC 66 ms 21072 KiB
colored_05.txt AC 92 ms 22128 KiB
colored_06.txt AC 59 ms 17860 KiB
colored_07.txt AC 56 ms 19448 KiB
colored_08.txt AC 80 ms 20596 KiB
colored_09.txt AC 61 ms 18220 KiB
colored_10.txt AC 53 ms 18856 KiB
colored_11.txt AC 74 ms 20052 KiB
colored_12.txt AC 53 ms 17108 KiB
colored_13.txt AC 52 ms 18656 KiB
colored_14.txt AC 88 ms 20856 KiB
colored_15.txt AC 53 ms 17112 KiB
colored_16.txt AC 63 ms 19256 KiB
colored_17.txt AC 83 ms 20280 KiB
colored_18.txt AC 59 ms 17688 KiB
colored_19.txt AC 74 ms 19580 KiB
colored_20.txt AC 95 ms 24064 KiB
colored_21.txt AC 59 ms 17956 KiB
colored_22.txt AC 81 ms 21032 KiB
colored_23.txt AC 80 ms 21600 KiB
colored_24.txt AC 75 ms 18464 KiB
colored_25.txt AC 97 ms 25072 KiB
example_00.txt AC 7 ms 3584 KiB
example_01.txt AC 2 ms 3604 KiB
hand_00.txt AC 82 ms 28200 KiB
hand_01.txt AC 31 ms 12624 KiB
hand_02.txt AC 45 ms 18652 KiB
hand_03.txt AC 48 ms 18748 KiB
hand_04.txt AC 88 ms 27496 KiB
hand_05.txt AC 42 ms 18696 KiB
hand_06.txt AC 49 ms 18728 KiB
hand_07.txt AC 45 ms 18784 KiB
random_00.txt AC 82 ms 21552 KiB
random_01.txt AC 92 ms 22708 KiB
random_02.txt AC 7 ms 3496 KiB
random_03.txt AC 96 ms 22080 KiB
random_04.txt AC 89 ms 21288 KiB
random_05.txt AC 5 ms 3596 KiB
random_06.txt AC 93 ms 20824 KiB
random_07.txt AC 95 ms 20864 KiB
random_08.txt AC 6 ms 3516 KiB
random_09.txt AC 66 ms 18428 KiB
random_10.txt AC 77 ms 18748 KiB
random_11.txt AC 7 ms 3560 KiB
random_12.txt AC 51 ms 16584 KiB
random_13.txt AC 49 ms 16112 KiB