248442026-02-16 01:54:26999Hírlánccpp17Accepted 80/80234ms29876 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
#define int long long
using namespace std;

vector<int> v,vis,scc,kil,dp,temp;
vector<vector<int>> w;

void dfs(int i){
    vis[i]=1;
    if(vis[v[i]]==0){
        dfs(v[i]);
    }
    kil.push_back(i);
}

void dfs2(int i, int cnt){
    vis[i]=1;
    scc[i]=cnt;
    for(int u:w[i]){
        if(vis[u]==0){
            dfs2(u,cnt);
        }
    }
}

void dfs3(int i){
    vis[i]=1;
    if(vis[v[i]]==0&&temp[scc[v[i]]]<2){
        dfs3(v[i]);
    }
    dp[i]=dp[v[i]]+1;
}

signed main() {
    int n;cin>>n;
    v.resize(n);
    vis.resize(n);
    scc.resize(n);
    w.resize(n);
    for(int i = 0;i<n;i++){
        cin>>v[i];
        v[i]--;
        w[v[i]].push_back(i);
    }
    for(int i = 0;i<n;i++){
        if(vis[i]==0){
            dfs(i);
        }
    }
    for(int i = 0;i<n;i++){
        vis[i]=0;
    }
    int cnt=0;
    reverse(kil.begin(),kil.end());
    for(int i = 0;i<n;i++){
        if(vis[kil[i]]==0){
            cnt++;
            dfs2(kil[i],cnt);
        }
    }
    temp.resize(cnt+1);
    for(int i = 0;i<n;i++){
        temp[scc[i]]++;
    }
    dp.resize(n);
    for(int i = 0;i<n;i++){
        vis[i]=0;
        if(temp[scc[i]]>1){
            dp[i]=temp[scc[i]];
        }
    }
    for(int i = 0;i<n;i++){
        if(vis[i]==0&&temp[scc[i]]<2){
            dfs3(i);
        }
    }
    int indi=0;
    for(int i = 0;i<n;i++){
        if(dp[i]>dp[indi])indi=i;
    }
    cout<<indi+1<<' '<<dp[indi]<<endl;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask220/20
2Accepted2ms564 KiB
3Accepted2ms760 KiB
4Accepted2ms748 KiB
5Accepted2ms564 KiB
6Accepted2ms564 KiB
7Accepted2ms564 KiB
8Accepted2ms580 KiB
9Accepted2ms564 KiB
10Accepted2ms564 KiB
11Accepted2ms564 KiB
12Accepted2ms756 KiB
subtask318/18
13Accepted186ms19236 KiB
14Accepted174ms19388 KiB
15Accepted222ms19480 KiB
16Accepted175ms20020 KiB
17Accepted230ms21920 KiB
18Accepted178ms22436 KiB
19Accepted174ms22436 KiB
20Accepted234ms22436 KiB
21Accepted230ms26788 KiB
22Accepted174ms29876 KiB
subtask442/42
23Accepted1ms316 KiB
24Accepted2ms564 KiB
25Accepted2ms760 KiB
26Accepted2ms748 KiB
27Accepted2ms564 KiB
28Accepted2ms564 KiB
29Accepted2ms564 KiB
30Accepted2ms580 KiB
31Accepted2ms564 KiB
32Accepted2ms564 KiB
33Accepted2ms564 KiB
34Accepted2ms756 KiB
35Accepted186ms19236 KiB
36Accepted174ms19388 KiB
37Accepted222ms19480 KiB
38Accepted175ms20020 KiB
39Accepted230ms21920 KiB
40Accepted178ms22436 KiB
41Accepted174ms22436 KiB
42Accepted234ms22436 KiB
43Accepted230ms26788 KiB
44Accepted174ms29876 KiB
45Accepted192ms18084 KiB
46Accepted162ms18340 KiB
47Accepted163ms19620 KiB
48Accepted163ms18660 KiB
49Accepted158ms18928 KiB
50Accepted203ms19712 KiB
51Accepted158ms20388 KiB
52Accepted203ms21408 KiB
53Accepted209ms20520 KiB
54Accepted150ms21412 KiB