Submission

Status:

[PPPPTSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: KantaponZ

Problemset: forex

Language: cpp

Time: 1.010 second

Submitted On: 2026-03-03 21:54:18

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

#define db double

db dp[35][475];
db w[35][35];
int n;
int idx = 0, ct = 1e9;
queue<tuple<int,double,int>> q; // u, ww, ct;

int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> w[i][j];
        }
    }

    for (int st = 1; st <= n; st++) {
        for (int i = 0; i < 35; i++) for (int j = 0; j < 475; j++) dp[i][j] = 1;
        q.emplace(st, 1, 0);
        while (!q.empty()) {
            auto [u, ww, ct] = q.front();
            q.pop();
            if (ct + 1 >= 475) continue;
            for (int i = 1; i <= n; i++) {
                if (dp[i][ct+1] < ww * w[u][i]) {
                    dp[i][ct+1] = ww * w[u][i];
                    q.emplace(i, dp[i][ct+1], ct+1);
                }
            }
        }
        for (int i = 1; i <= 471; i++) {
            if (dp[st][i] > 1) {
                if (ct > i) {
                    ct = i;
                    idx = st;
                } else if (ct == i) idx = min(st, idx);
                break;
            }
        }
    }

    if (ct == 1e9) {
        cout << -1;
        return 0;
    }
    cout << idx << " " << ct;
}