gpt4 book ai didi

使用 DFS 计算 SCC

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:31:21 26 4
gpt4 key购买 nike

<分区>

我必须使用 C 语言创建一个编程代码,以使用深度优先搜索计算五个最大的强连通分量的大小数。我使用 Ubuntu 12.04 进行编程。我想出了以下代码,它在终端中显示的结果是:Segmentation Fault (core dumped)那是在尝试查看当我输入 graph[MaxVer][MaxVer][2] 时会发生什么在函数调用中。

代码


#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;
}
}

结束

谁能告诉我代码中的问题是什么?编译时的主要问题发生在调用 DFS 和 DFS_loop 期间。它说“数组类型具有不完整的元素类型”。是的,我想告诉你输入是在一个文件中给出的,有 875714 个顶点。输入的示例是 2 74657,其中 2 是尾部,74657 是有向边的头部。

此外,如果有人可以建议更好的程序,请提供。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com