Submission
Status:
[PPPxSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: tnka4_
Problemset: forex
Language: cpp
Time: 0.058 second
Submitted On: 2026-03-10 18:27:27
#include <iostream>
#include <vector>
#include <queue>
//#include <thread>
using namespace std;
int n, latestDepth = 32, latestCur;
vector<vector<double>> adjMat;
int main() {
cin >> n;
adjMat.resize(n, vector<double>(n));
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
cin >> adjMat[i][j];
}
}
for (int i=0; i<n; i++) {
//cout << "============ " << i << endl;
queue<vector<double>> q;
double currentCurrency = i;
q.push({currentCurrency, 0, 1});
while (!q.empty()) {
//this_thread::sleep_for(500ms);
vector<double> current = q.front();
q.pop();
//cout << current[1] << " = " << current[2] << " (CURR: " << current[0] << ")" << endl;
if (current[2] > 1.01 && latestDepth > current[1] && current[0] == currentCurrency) {
latestDepth = current[1];
latestCur = current[0];
//cout << "OK" << endl;
break;
}
if (current[1] == n+1) continue;
for (int j=0; j<n; j++) {
double dj = j;
q.push({dj, current[1]+1, current[2] * adjMat[current[0]][dj]});
}
}
}
if (latestDepth == 32) {
cout << -1;
} else {
cout << latestCur + 1 << " " << latestDepth;
}
return 0;
}