提出 #63055980
ソースコード 拡げる
#ifndef ATCODER // AtCoder 環境でない場合はデバッグモードを有効にする. コンパイルにすごく時間がかかる!
#define _GLIBCXX_DEBUG // out of rangeを検出してくれる。#include<bits/stdc++.h>の前に記述する必要あり
#endif
#include<bits/stdc++.h>
using namespace std;
struct IOSetup {
IOSetup() {
// 実行が高速化するコード
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
// 小数点以下10桁まで(四捨五入)
cout << fixed << setprecision(10);
}
} iosetup;
#define rep(i, n) for (int i = 0; i < n; i++)
#define rep2(i, a, b) for (int i = a; i < b; i++)
#define rrep(i, b, a) for (int i = b; i > a; i--)
#define rep3(i, a, b, d) for (int i = a; i < b; i+=d)
#define rrep3(i, b, a, d) for (int i = b; i > a; i-=d)
#define between(x, a, b) (((a) <= (x)) && ((x) < (b)))
// Template function to print various container types
template<typename Container>
void print(const Container& a) {
cout << "{";
bool first = true;
for (const auto& i : a) {
if (!first) {
cout << ",";
}
cout << i;
first = false;
}
cout << "}" << endl;
}
// Template function to print 2D vector
template<typename T>
void printvec2d(const vector<vector<T>>& a) {
size_t rows = a.size();
for (size_t i = 0; i < rows; ++i) {
print(a[i]);
}
}
// Template function to print 3D vector
template<typename T>
void printvec3d(const vector<vector<vector<T>>>& a) {
size_t depth = a.size();
for (size_t i = 0; i < depth; ++i) {
printvec2d(a[i]);
cout << endl;
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> ans(n, vector<int>(n));
vector<string> C(n);
rep(i, n) cin >> C[i];
deque<tuple<int, int, int>> dq;
vector<vector<int>> dist(n, vector<int>(n, -1));
rep(i, n) {
dist[i][i] = 0;
dq.push_back({i, i, 0});
}
vector<vector<vector<int>>> g0(n, vector<vector<int>>(26));
vector<vector<vector<int>>> g1(n, vector<vector<int>>(26));
rep(i, n) {
rep(j, n) {
char x = C[i][j];
if (x == '-') continue;
g0[i][x - 'a'].push_back(j);
g1[j][x - 'a'].push_back(i);
if (dist[i][j] != 0) dist[i][j] = 1;
dq.push_back({i, j, 1});
}
}
while (!dq.empty()) {
auto [s, t, d] = dq.front();
dq.pop_front();
rep(i, 26) {
for (auto& s1 : g1[s][i]) {
for (auto& t1 : g0[t][i]) {
if (dist[s1][t1] != -1) continue;
dist[s1][t1] = d + 2;
dq.push_back({s1, t1, d + 2});
}
}
}
}
rep(i, n) {
rep(j, n) {
cout << dist[i][j] << " ";
}
cout << endl;
}
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Palindromic Shortest Path |
| ユーザ | kazuki00 |
| 言語 | C++ 23 (gcc 12.2) |
| 得点 | 450 |
| コード長 | 2977 Byte |
| 結果 | AC |
| 実行時間 | 12 ms |
| メモリ | 4012 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 450 / 450 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample00.txt, sample01.txt |
| All | sample00.txt, sample01.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt, testcase44.txt, testcase45.txt, testcase46.txt, testcase47.txt, testcase48.txt, testcase49.txt, testcase50.txt, testcase51.txt, testcase52.txt, testcase53.txt, testcase54.txt, testcase55.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample00.txt | AC | 1 ms | 3484 KiB |
| sample01.txt | AC | 1 ms | 3436 KiB |
| testcase00.txt | AC | 1 ms | 3528 KiB |
| testcase01.txt | AC | 1 ms | 3424 KiB |
| testcase02.txt | AC | 2 ms | 3740 KiB |
| testcase03.txt | AC | 12 ms | 4000 KiB |
| testcase04.txt | AC | 1 ms | 3540 KiB |
| testcase05.txt | AC | 2 ms | 3720 KiB |
| testcase06.txt | AC | 2 ms | 3768 KiB |
| testcase07.txt | AC | 2 ms | 3720 KiB |
| testcase08.txt | AC | 2 ms | 3668 KiB |
| testcase09.txt | AC | 2 ms | 3744 KiB |
| testcase10.txt | AC | 2 ms | 3448 KiB |
| testcase11.txt | AC | 2 ms | 3660 KiB |
| testcase12.txt | AC | 2 ms | 3820 KiB |
| testcase13.txt | AC | 2 ms | 3700 KiB |
| testcase14.txt | AC | 2 ms | 3608 KiB |
| testcase15.txt | AC | 2 ms | 3744 KiB |
| testcase16.txt | AC | 2 ms | 3496 KiB |
| testcase17.txt | AC | 2 ms | 3768 KiB |
| testcase18.txt | AC | 2 ms | 3772 KiB |
| testcase19.txt | AC | 2 ms | 3668 KiB |
| testcase20.txt | AC | 2 ms | 3744 KiB |
| testcase21.txt | AC | 4 ms | 3840 KiB |
| testcase22.txt | AC | 3 ms | 3672 KiB |
| testcase23.txt | AC | 6 ms | 3864 KiB |
| testcase24.txt | AC | 2 ms | 3592 KiB |
| testcase25.txt | AC | 10 ms | 4012 KiB |
| testcase26.txt | AC | 2 ms | 3688 KiB |
| testcase27.txt | AC | 4 ms | 3780 KiB |
| testcase28.txt | AC | 3 ms | 3720 KiB |
| testcase29.txt | AC | 5 ms | 3912 KiB |
| testcase30.txt | AC | 2 ms | 3576 KiB |
| testcase31.txt | AC | 7 ms | 3888 KiB |
| testcase32.txt | AC | 2 ms | 3812 KiB |
| testcase33.txt | AC | 4 ms | 3788 KiB |
| testcase34.txt | AC | 2 ms | 3580 KiB |
| testcase35.txt | AC | 5 ms | 3848 KiB |
| testcase36.txt | AC | 3 ms | 3660 KiB |
| testcase37.txt | AC | 6 ms | 3788 KiB |
| testcase38.txt | AC | 3 ms | 3556 KiB |
| testcase39.txt | AC | 4 ms | 3968 KiB |
| testcase40.txt | AC | 4 ms | 3840 KiB |
| testcase41.txt | AC | 5 ms | 3916 KiB |
| testcase42.txt | AC | 3 ms | 3688 KiB |
| testcase43.txt | AC | 6 ms | 3892 KiB |
| testcase44.txt | AC | 2 ms | 3668 KiB |
| testcase45.txt | AC | 3 ms | 3692 KiB |
| testcase46.txt | AC | 2 ms | 3612 KiB |
| testcase47.txt | AC | 4 ms | 3780 KiB |
| testcase48.txt | AC | 4 ms | 3712 KiB |
| testcase49.txt | AC | 6 ms | 3780 KiB |
| testcase50.txt | AC | 4 ms | 3756 KiB |
| testcase51.txt | AC | 6 ms | 3864 KiB |
| testcase52.txt | AC | 3 ms | 3568 KiB |
| testcase53.txt | AC | 6 ms | 3864 KiB |
| testcase54.txt | AC | 5 ms | 3780 KiB |
| testcase55.txt | AC | 7 ms | 3872 KiB |