Submission #1091094

#TimeUsernameProblemLanguageResultExecution timeMemory
1091094vjudge1Sailing Race (CEOI12_race)C++17
0 / 100
1176 ms4436 KiB
#include <bits/stdc++.h>
using namespace std;
bool g[501][501];
int dp[501][501][2];
int n;
void najdi(int l,int r,int i)
{
    if(dp[l][r][i]!=-1)return;
    int d=r;
    if(i==1)
    {
        d=l;
    }
    int res=0;
    for(int j=(l+1)%n;j!=r;j=(j+1)%n)
    {
        if(g[d][j])
        {
            najdi(l,j,0);
            najdi(j,r,1);
            res=max(res,1+max(dp[l][j][0],dp[j][r][1]));
        }
    }
    dp[l][r][i]=res;
    cout<<res<<endl;
}
int main()
{
    int k;
    cin>>n>>k;
    int ans=0,res=0,x=0;
    for(int i=0;i<n;i++)
    {
        int a;
        for(int j=0;j<n;j++)
        {
            dp[i][j][0]=-1;
            dp[i][j][1]=-1;
        }
        while(cin>>a&&a!=0)
        {
            g[i][a-1]=1;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(g[i][j])
            {
                najdi(i,j,0);
                najdi(j,i,1);
                res=max(res,1+max(dp[i][j][0],dp[j][i][1]));
                if(res>ans)
                {
                    x=i;
                    ans=res;
                }
            }
        }
    }
    cout<<ans<<endl<<x+1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...