救命啊错在哪里死活调不出来
查看原帖
救命啊错在哪里死活调不出来
322285
北京楼主2021/5/15 13:48

以下是程序:

//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???死活不知道错在哪里

感谢大佬指教!

2021/5/15 13:48
加载中...