int visit[10000]={0};
int c(LGraph Graph)
{
visit[0]=1;
Ptr t=Graph->G[0].FirstEdge;
Ptr queue[10000];
int front=0,rear=0;
queue[rear++]=t;
int cnt=0;
while(front<rear){
Ptr temp=queue[front++];
while(temp->next){
queue[rear++]=temp->next;
visit[temp->next->adjV]=1;
temp=temp->next;
}
}
cnt++;
for(int i=0;i<Graph->Nv;i++){
if(visit[i]==0){
Ptr t=Graph->G[i].FirstEdge;
Ptr queue[10000];
int front=0,rear=0;
queue[rear++]=t;
int cnt=0;
while(front<rear){
Ptr temp=queue[front++];
while(temp->next){
queue[rear++]=temp->next;
visit[temp->next->adjV]=1;
temp=temp->next;
}
}
cnt++;
}
}
return cnt;
}
因为我现在看不了原题了所以大概回忆着写了出来,就是让求有几个强连通分量,然后数据结构是邻接表,我的思路是首先从序号为0的结点开始进行广度优先遍历,也就是层序遍历,把序号0所在的强连通分量都遍历后,我再检查所有节点中谁没被遍历过,即visit[i]==0;
然后用和上面同样的方法进行遍历
但是总是不对,显示为段错误,到底怎么回事呢?