This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
vector<int> graf[500];
int odl[500][500];
int akt_pos = 0;
///cykle
stack<int> stosik;
int akt_v;
int akt_wynik;
int odwiedzone_2[500];
void recursion(int p, int w, int glebokosc){
odwiedzone_2[w] = true;
for (int s : graf[w]){
if (p!=s){
if (odwiedzone_2[w]==false) recursion(w,s,glebokosc+1);
else if (akt_v==w) akt_wynik = max(akt_wynik,glebokosc);
}
}
odwiedzone_2[w] = false;
}
int start(int n,bool A[][500] ){
for (int i=0; i<n; i++){
for (int j=0; j<n; j++){
if (A[i][j]) graf[i].push_back(j);
}
}
for (int i=0; i<n; i++){
akt_wynik = 0;
for (int j=0; j<n; j++) odwiedzone_2[j] = false;
recursion(-1,i,1);
if (akt_wynik>4) return -1;
}
for (int i=0; i<n; i++){
vector<bool> odwiedzone(n,false);
queue<pair<int,int>> kolejka;
odwiedzone[i] = true;
kolejka.push({0,i});
while (!kolejka.empty()){
int v = kolejka.front().second;
int val = kolejka.front().first;
kolejka.pop();
odl[i][v] = val;
for (int s : graf[v]){
if (!odwiedzone[s]){
odwiedzone[s] = true;
kolejka.push({val+1,s});
}
}
}
}
return 0;
}
int nextMove(int R){
int akt_k,akt_m=1e8;
for (int s : graf[akt_pos]){
int maxi=0;
for (int s_2 : graf[R]){
maxi = max(maxi,odl[s][s_2]);
}
if (maxi < akt_m){
akt_k = s;
akt_m = maxi;
}
}
akt_pos = akt_k;
return akt_k;
}
Compilation message (stderr)
coprobber.cpp: In function 'int nextMove(int)':
coprobber.cpp:100:12: warning: 'akt_k' may be used uninitialized in this function [-Wmaybe-uninitialized]
100 | return akt_k;
| ^~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |