递归错#2 #3 #4 #5 #10 求助
查看原帖
递归错#2 #3 #4 #5 #10 求助
776232
zhizhizhiwang楼主2023/10/2 20:40

代码如下

#include<iostream>
#include<algorithm>
#include<stack>

using namespace std;

const int N = 2e5 +5;

bool vis[N] = {false};
int ans;
int a,n[N];
int eans[N];


int dfs(int a)
{
    if(vis[a])return ans - eans[a];
    vis[a] = true;
    ans++;
    eans[a] = ans;
    dfs(n[a]);
}



int main()
{
    scanf("%d\n",&a);
    for(int i = 1;i <= a;i++)
    {
        scanf("%d ",&n[i]);
    }
    int lans = 0x3f3f3f3f;
    for(int i = 0;i <= a;i++)
    {
        bool vis[N] = {false};
        ans = 0;
        ans = dfs(a)+1;
        if (ans < lans and ans > 1)lans = ans;
    }
    printf("%d",lans);
    return 0;

}
2023/10/2 20:40
加载中...