千找万找,终于找到错误了

HDU1102 (最小生成树)

RE-栈溢出了5遍;

 1 int find_set(int x)
 2 {
 3     if(F[x] == x)///本来是if(F[x] == -1) return x;如果数据量很大的话,所有的F[x]可能就会被改成正值,不会有-1了,也就是说不会返回了,首先是数组受不鸟暴栈RE,然后是TLE
 4         return x;
 5     else
 6         return find_set(F[x]);
 7 }
 8 int main()
 9 {
10     ...........
11     repu(i,1,n+1)
12     F[i] = i;///本来是f[i] = -1,结果暴栈了;
13     ...........
14 }

百度之星1002,开始是RE-非法访问内存,原因就是数组开小了,然后就是RE-暴栈:原因却是数组放到main函数里了,变成全局变量就过了。。。

原文地址:https://www.cnblogs.com/ACMERY/p/4528662.html