#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,k;
    cin >> n >> k;
    vector<vector<int>> adj(n,vector<int>(n));
    for(int i=0;i<n;i++){
        int x;
        cin >> x;
        while(x!=0){
            x--;
            adj[i][x]=1;
            cin >> x;
        }
    }
    vector<vector<int>> dp(n,vector<int>(n));
    pair<int,int> ans={-1,-1};
    for(int i=1;i<n;i++){
        for(int j=0;j<n;j++){
            int r=(j+i)%n;
            int ma1=0;
            int ma2=0;
            if(j<r){
                for(int o=j+1;o<r;o++){
                    if(adj[r][o]){
                        ma1=max(ma1,max(dp[o][j]-adj[o][j],dp[o][r]-adj[o][r])+1);
                    }
                    if(adj[j][o]){
                        ma2=max(ma2,max(dp[o][j]-adj[o][j],dp[o][r]-adj[o][r])+1);
                    }
                }
            }
            else{
                for(int o=j+1;o<r+n;o++){
                    o%=n;
                    if(adj[r][o]){
                        ma1=max(ma1,max(dp[o][j]-adj[o][j],dp[o][r]-adj[o][r])+1);
                    }
                    if(adj[j][o]){
                        ma2=max(ma2,max(dp[o][j]-adj[o][j],dp[o][r]-adj[o][r])+1);
                    }
                }
            }
            if(adj[j][r]){
                dp[j][r]=max(ma1+adj[j][r],dp[j][r]);
                if(ans.first<dp[j][r])ans={dp[j][r],r};
            }
            if(adj[r][j]){
                dp[r][j]=max(ma2+adj[r][j],dp[j][r]);
                if(ans.first<dp[r][j])ans={dp[r][j],r};
            }
        }
    }
    if(k==0){
        cout << ans.first << " " << ans.second <<"\n";
    }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |