Contando los SCC usando DFS

Tengo que crear un código de progtwigción en C para contar el número de tamaños de los cinco componentes más fuertes conectados mediante la primera búsqueda de profundidad. Yo uso Ubuntu 12.04 para progtwigr. Se me ocurrió el siguiente código y el resultado que muestra en Terminal es: Segmentation Fault (core dumped) Eso fue mientras trataba de ver qué sucede cuando pongo el graph[MaxVer][MaxVer][2] en la llamada a la function.

CÓDIGO


 #include "stdio.h" #include "stdlib.h" #define MaxVer 875714 long int t=0; long int visited[MaxVer][2]={0}; long int s=NULL; long int leader[MaxVer]; long int time[MaxVer]; int count; main() { long int i,j,k; long int Graph[MaxVer][MaxVer][2]={0}; FILE *fp; fp=fopen("SCC.txt","r"); fscanf(fp,"%ld",&j); for(i=1;i<=875714;i++) while(i==j) { fscanf(fp,"%ld",&k); Graph[i-1][k-1][0]=1; fscanf(fp,"%ld",&j); } fclose(fp); DFS_loop(Graph,0); for(i=0;i<MaxVer;i++) for(j=0;j<MaxVer;j++) if(Graph[(time[i])][(time[j])][0]=1) Graph[i][j][1]=1; DFS_loop(Graph,1); } DFS_loop(long int graph[][][],long int i) { long int node; for(node=MaxVer;node>0;node--) if(!visited[node-1][i]) { s=node; DFS(graph,i,node); if(i==1&&count<5) printf("%ld",t); } } DFS (long int graph[][][],long int i,long int node) { long int node_2; visited[node-1][i]=1; leader[node-1]=s; for(node_2=1;node_2<=MaxVer;node_2++) if(graph[node_2-1][node-1][i]==1) if(!visited[node_2-1][i]) { DFS(graph,i,node_2); if(i==1&&count<5) { t++; count++; } } if(i==0) { t++; time[t-1]=node; } } 

FIN

¿Alguien podría decirme cuál es el problema en el código? El problema principal durante la compilation se produce durante la llamada de DFS y DFS_loop. Dice que "tipo de matriz tiene un tipo de elemento incompleto". Y sí, quiero decirte que la input se da en un file, con 875714 vértices. El ejemplo de una input es 2 74657, donde 2 es la queue y 74657 es la cabeza del borde dirigido.

Además, si alguien puede sugerir un progtwig mejor, indíquelo.

Haga los prototypes de function adecuados antes de main() , y especifique los tamaños de la 2da y 3ra dimensión (use el graph[MaxVer][MaxVer][] lugar del graph[][][] )