提出 #63063244


ソースコード 拡げる

#include <bits/stdc++.h>
#include <chrono>
using namespace std;
using namespace chrono;


// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// template<class T> using oset =tree<T, null_type, less_equal<T>, rb_tree_tag,tree_order_statistics_node_update>;
 


// Aliases 
using ll = long long;
using ull = unsigned long long;
using ld = double;
 
 
// Constants
constexpr ll INF = 4e18;
constexpr ld EPS = 1e-9;  
constexpr ll MOD = 998244353; // 1e9+7
 
// Macros
#define F first
#define S second
#define all(x) begin(x), end(x)
#define allr(x) rbegin(x), rend(x)
typedef vector<int> vi;
typedef pair<int,int> pi;
// #define insert push_back
#define pb push_back
#define MP make_pair
#define endl '\n'
#define rep(i,a,b) for (int i = a; i < b; i++)

 


const ll mod = 998244353;
 
ll inv(ll i) {if (i == 1) return 1; return (mod - ((mod / i) * inv(mod % i)) % mod) % mod;}
 
ll mod_mul(ll a, ll b) {a = a % mod; b = b % mod; return (((a * b) % mod) + mod) % mod;}
 
ll mod_add(ll a, ll b) {a = a % mod; b = b % mod; return (((a + b) % mod) + mod) % mod;}
 
ll mod_sub(ll a, ll b) {a = a % mod; b = b % mod; return (((a - b + mod) % mod) + mod) % mod;}
  
ll ceil_div(ll a, ll b) {return a % b == 0 ? a / b : a / b + 1;}
 
ll pwr(ll a, ll b) {a %= mod; ll res = 1; while (b > 0) {if (b & 1) res = res * a % mod; a = a * a % mod; b >>= 1;} return res;}
 


vector<ll> sieve(int n) {int*arr = new int[n + 1](); vector<ll> vect; for (int i = 2; i <= n; i++)if (arr[i] == 0) {vect.push_back(i); for (int j = 2 * i; j <= n; j += i)arr[j] = 1;} return vect;}





template <typename T> // cin >> vector<T>
istream &operator>>(istream &istream, vector<T> &v)
{
    for (auto &it : v)
        cin >> it;
    return istream;
}
template <typename T> // cout << vector<T>
ostream &operator<<(ostream &ostream, const vector<T> &c)
{
    for (auto &it : c)
        cout << it << " ";
    return ostream;
}


 

// Mathematical functions
int GCD(int a, int b)
{
    while (b)
    {
        a %= b;
        swap(a, b);
    }
    return a;
}



int GCD_extended(int a, int b, int &x, int &y)
{
    x = 1, y = 0;
    int x1 = 0, y1 = 1, a1 = a, b1 = b;
    while (b1)
    {
        int q = a1 / b1;
        tie(x, x1) = make_tuple(x1, x - q * x1);
        tie(y, y1) = make_tuple(y1, y - q * y1);
        tie(a1, b1) = make_tuple(b1, a1 - q * b1);
    }
    return a1;
}



int LCM(int a, int b)
{
    return ((ll)a * b) / GCD(a, b);
}


ll modpow(ll x, ll n, int m = MOD)
{
    if (x == 0 && n == 0)
        return 0; // undefined case
    ll res = 1;
    while (n > 0)
    {
        if (n % 2)
            res = (res * x) % m;
        x = (x * x) % m;
        n /= 2;
    }
    return res;
}
 
int modinv(int x, int m = MOD)
{
    return modpow(x, m - 2, m);
}


 
mt19937 rng;
ll getRandomNumber(ll l, ll r)
{
    uniform_int_distribution<ll> dist(l, r);
    return dist(rng);
}

 
 
 
ll binToDec(string s) { return bitset<64>(s).to_ullong(); }
string decToBin(ll a) { return bitset<64>(a).to_string(); }


 
ll andOperator(ll a, ll b)
{
    ll shiftcount = 0;
 
    while (a != b and a > 0)
    {
        shiftcount++;
        a = a >> 1;
        b = b >> 1;
    }
    return int64_t(a << shiftcount);
}


ll factorial(ll n){
    if (n==0){
        return 1;
    }
    ll ans=1;
    for (ll i=1;i<=n;i++){
         ans=mod_mul(ans,i);
    }
    return ans;
}
 
 
 
ll lcm(ll a,ll b){
    ll g=__gcd(a,b);
    return (a*b/g);
}
 
 
long long int power(int base, int exp)
{
    if (exp == 0)
       return 1;
    else if (exp == 1)
       return base;
    else
    {
       long long int calc;
       if (exp % 2 == 0)
       {
         calc = power(base, exp/2);
         calc *= calc;
       }
       else
       {
         calc = base*power(base, exp-1);
       }
       return calc;
    }
}


class Compare {
public:
    bool operator()(pair<int,int> a, pair<int,int> b)
    {
        int diff=a.second-a.first;
        int diff2=b.second-b.first;
 
        if (diff == diff2) {
            return a.first>b.first;
        }
        
        
 
        return diff<diff2;
        }
};
 
bool get(ll a,ll b, ll x){
    if (a<b){
        swap(a,b);
    }
    if (x==a || x==b){
        return true;
    }
    if (a==0 || b==0){
        return false;
    }
    return get(a%b,b,x);
}
 
 
long long binpow(long long a, long long b, long long m) {
    a %= m;
    long long res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a % m;
        a = a * a % m;
        b >>= 1;
    }
    return res;
}
 

 
ll nCr(ll n, ll r,vector<ll>&f) {
    if (n<r){
        return 0;
    }
    ll ans=f[n];
    ans=mod_mul(ans,inv(f[r]));
    ans=mod_mul(ans,inv(f[n-r]));
    return ans;
}
 
 
ll mysqrt(ll n){
    ll ans=0;
    ll low=1;
    ll high=1e9;
    while(low<=high){
        ll md=(low+high)/2;
        if (md*md<=n){
            ans=md;
            low=md+1;
        }
        else{
            high=md-1;
        }
    }
    return ans;
}
 


bool cmp(pair<ll, ll>& a,
         pair<ll, ll>& b)
{
    return a.second < b.second;
} 



bool check(ll i,ll n,ll k){
   ll x=i;
   ll par=x/2+1;
   ll st=1+(par-1)*(n/i);
   ll en=st+n/i-1;
   if (((en+st)/2)==k){
        return true;
   }
   return false;

}





bool sortbysec(string &a,string &b){
    return a.length()<b.length();
}


ll ans=0;
ll N=110;
ll n;
vector<string>a(N);


void dfs(ll u,string s,ll tar){
    // cout << s << endl;
    ll d=s.length();
    if (d>n){
        return;
    }
    int i=0;
    int j=s.length()-1;
    bool ch=1;
    while(i<=j){
        if (s[i]!=s[j]){
            ch=0;
            break;
        }
        i++;
        j--;
    }
    // cout << u << " " << tar << endl;
    if (ch && u==tar){
        ll d=s.length();
        ans=min(ans,d);
        return;
    }

    for (int i=0;i<n;i++){
        if (a[u][i]!='-'){
            string s2=s;
            s2+=a[u][i];
            dfs(i,s2,tar);
        }
    }

}











void solve(){
    cin>>n;
    for (int i=0;i<n;i++){
        cin>>a[i];
    }
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            string s="";
            ans=INF;
            dfs(i,s,j);
            if (ans==INF){
                ans=-1;
            }
            cout << ans << " ";
            // break;

        }
        cout << endl;
    }

}  
 



int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int T;
    // cin>>T;
    T=1;
    auto start1 = high_resolution_clock::now();
    while(T--){
        solve();
    }
    auto stop1 = high_resolution_clock::now();
    auto duration = duration_cast<microseconds>(stop1 - start1);
    cerr << "Time: " << duration . count() / 1000 << " ms" << endl;
 
    return 0;
}

提出情報

提出日時
問題 E - Palindromic Shortest Path
ユーザ an1ket_62
言語 C++ 20 (gcc 12.2)
得点 0
コード長 7156 Byte
結果 TLE
実行時間 2210 ms
メモリ 3552 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 450
結果
AC × 2
AC × 9
TLE × 49
セット名 テストケース
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 3456 KiB
sample01.txt AC 1 ms 3472 KiB
testcase00.txt AC 1 ms 3484 KiB
testcase01.txt AC 1 ms 3492 KiB
testcase02.txt TLE 2207 ms 3216 KiB
testcase03.txt TLE 2207 ms 3480 KiB
testcase04.txt AC 1 ms 3552 KiB
testcase05.txt AC 2 ms 3416 KiB
testcase06.txt AC 66 ms 3524 KiB
testcase07.txt AC 70 ms 3536 KiB
testcase08.txt TLE 2207 ms 3412 KiB
testcase09.txt TLE 2207 ms 3480 KiB
testcase10.txt TLE 2207 ms 3328 KiB
testcase11.txt TLE 2207 ms 3324 KiB
testcase12.txt TLE 2207 ms 3324 KiB
testcase13.txt TLE 2207 ms 3368 KiB
testcase14.txt TLE 2207 ms 3344 KiB
testcase15.txt TLE 2207 ms 3248 KiB
testcase16.txt TLE 2207 ms 3344 KiB
testcase17.txt TLE 2207 ms 3400 KiB
testcase18.txt AC 2 ms 3552 KiB
testcase19.txt TLE 2207 ms 3400 KiB
testcase20.txt TLE 2207 ms 3348 KiB
testcase21.txt TLE 2207 ms 3324 KiB
testcase22.txt TLE 2207 ms 3328 KiB
testcase23.txt TLE 2207 ms 3428 KiB
testcase24.txt TLE 2207 ms 3320 KiB
testcase25.txt TLE 2207 ms 3344 KiB
testcase26.txt TLE 2207 ms 3348 KiB
testcase27.txt TLE 2207 ms 3484 KiB
testcase28.txt TLE 2207 ms 3236 KiB
testcase29.txt TLE 2207 ms 3352 KiB
testcase30.txt TLE 2207 ms 3292 KiB
testcase31.txt TLE 2207 ms 3424 KiB
testcase32.txt TLE 2207 ms 3472 KiB
testcase33.txt TLE 2207 ms 3348 KiB
testcase34.txt TLE 2207 ms 3296 KiB
testcase35.txt TLE 2207 ms 3368 KiB
testcase36.txt TLE 2207 ms 3332 KiB
testcase37.txt TLE 2207 ms 3332 KiB
testcase38.txt TLE 2210 ms 3332 KiB
testcase39.txt TLE 2207 ms 3348 KiB
testcase40.txt TLE 2207 ms 3388 KiB
testcase41.txt TLE 2207 ms 3380 KiB
testcase42.txt TLE 2210 ms 3352 KiB
testcase43.txt TLE 2207 ms 3400 KiB
testcase44.txt TLE 2207 ms 3364 KiB
testcase45.txt TLE 2207 ms 3284 KiB
testcase46.txt TLE 2207 ms 3300 KiB
testcase47.txt TLE 2207 ms 3324 KiB
testcase48.txt TLE 2207 ms 3360 KiB
testcase49.txt TLE 2207 ms 3248 KiB
testcase50.txt TLE 2207 ms 3324 KiB
testcase51.txt TLE 2207 ms 3324 KiB
testcase52.txt TLE 2207 ms 3460 KiB
testcase53.txt TLE 2207 ms 3372 KiB
testcase54.txt TLE 2207 ms 3344 KiB
testcase55.txt TLE 2207 ms 3376 KiB