以下是程序:
//P2014 [CTSC1997]选课
#include<bits/stdc++.h>
using namespace std;
int n,m;
int s[300+10],fa[300+10],findfa[300+10];
//findfa[i]就表示第i个课程的祖宗多少代
int findd(int i)
{
if(fa[i]==0)return 0;
if(findfa[i])return findfa[i];//已经找过了
findfa[i]=findd(fa[i])+1;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>fa[i]>>s[i];
for(int i=1;i<=n;++i)
{findd(i);cout<<findfa[i]<<endl;}
return 0;
}
这是我截取的部分代码,用题目所给的大样例调试,照理来说第5个课程应该是有祖宗2代(就是有两个先修课)此时findfa[5]的值应该是2,但是程序为啥就输出了一个4881025???死活不知道错在哪里
感谢大佬指教!