数据结构编程——求无向图连通子图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h>
#include<stdlib.h>
void DFS(int **a,int v,int *k,int n,int *visit){
int *S=(int *)malloc(50*sizeof(int));
int top=-1,j;
(*k)++;
visit[v]=1;
DFS(a,v,&k,n,visit);
sum++;
b[e]=k;
e++;
}
}
printf("%d\n",sum);
int t;
for(i=0;i<sum-1;i++){
for(e=i+1,f=i;e<sum;e++)
if(b[e]<b[f])f=e;
if(f!=e){
t=b[i];b[i]=b[f];b[f]=t;
a[e][f]=1;
a[fBaidu Nhomakorabea[e]=1;
}
int k=0;
int sum=0;
int *b=(int *)malloc((n+1)*sizeof(int));
DFS(a,1,&k,n,visit);
sum++;
b[0]=k;
e=1;
int v;
for(v=1;v<=n;v++){
k=0;
if(visit[v]==0){
a[e]=(int *)malloc(sizeof(int)*(n+1));
}
for(e=1;e<=n;e++)
for(f=1;f<=n;f++)
a[e][f]=0;
for(e=1;e<=n;e++)
visit[e]=0;
for(i=1;i<=m;i++){
scanf("%d %d",&e,&f);
int n,m,i;//n个顶点,m条边
scanf("%d %d",&n,&m);
int *visit=(int *)malloc((n+1)*sizeof(int));
int **a=(int **)malloc((n+1)*sizeof(int*));
int e,f;
for(e=0;e<=n;e++){
++top;
S[top]=v;
while(top!=-1){
v=S[top];
for(j=1;j<=n;j++){
if(a[v][j]==1&&visit[j]==0){
(*k)++;
visit[j]=1;
S[++top]=j;
break;
}
if(j==n)top--;
}
}
}
void xxxx(){
}
}
for(i=0;i<sum;i++){
printf("%d ",b[i]);
}
printf("\n");
}
int main(){
int xx,t;
scanf("%d",&t);
for(xx=1;xx<=t;xx++){
xxxx();
}
system("pause");
return 0;
}
相关文档
最新文档