# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
537594 | MinhAnhnd | Sailing Race (CEOI12_race) | C++14 | 3096 ms | 16768 KiB |
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>
#include <iostream>
#define ll long long
#define ull unsigned ll
using namespace std;
bool branches[501][501]={};
bool chaychua[501][501][2]={};
long parents[401];
long N,K;
long dp[501][501][2]={};
vector<long> dp1 [501][501][2] = {};
long depth = -1;
long pre(long p){
if (p == 1) return N;
return p-1;
}
long nex(long p){
if (p == N) return 0;
return p+1;
}
long memo(long start, long end,long direction){
if (chaychua[start][end][direction]) return dp[start][end][direction];
chaychua[start][end][direction] = 1;
//counter-clockwise;
if (direction == 0){
for(long i = nex(start);i != end; i = nex(i)){
if (branches[start][i]){
dp[start][end][0] = max(memo(i,end,0),memo(start,i,1))+1;
}
}
}
else{
for(long i = nex(start);i != end;i = nex(i)){
if (branches[end][i]){
dp[start][end][1] = max(memo(i,end,0),memo(start,i,1))+1;
}
}
}
return dp[start][end][direction];
}
int main(){
cin>>N>>K;
long v,u=0;
for(long i = 1;i<=N;i++){
cin>>v;
while(v!=0){
branches[i][v]=1;
cin>>v;
}
}
long maxi = -1;
long mem = 0;
for(long i = 1;i<=N;i++){
//counter-clockwise
long val = memo(i,i,0);
if(val>=maxi){
maxi = val;
mem = i;
}
}
if (K==1) while(true);
cout<<maxi<<endl<<mem<<endl;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |