回复 12楼 azzbcc
#include<stdio.h>
int visited[5];
typedef struct e
{
int adj;
}e,A[30][30];
typedef struct
{
A arcs;
}MGraph;
void DFS(MGraph G,int i,int &a)
{
int j;
visited[i]=1;
a++;
for(j=0;j<5;j++)
if(G.arcs[i][j].adj==1&&!visited[j])
DFS(G,j,a);
}
int DFSTraverse(MGraph G)
{
int b=0;
DFS(G,0,b);
if(b==5)
return 1;
else
return 0;
}
int main()
{
int i,q,w;
MGraph G={0};
MGraph G1={0};
G.arcs[0][1].adj=1;
G.arcs[0][3].adj=1;
G.arcs[1][0].adj=1;
G.arcs[1][2].adj=1;
G.arcs[1][4].adj=1;
G.arcs[2][1].adj=1;
G.arcs[3][1].adj=1;
G.arcs[4][1].adj=1;
G1.arcs[0][3].adj=1;
G1.arcs[1][2].adj=1;
G1.arcs[1][4].adj=1;
G1.arcs[2][1].adj=1;
G1.arcs[3][0].adj=1;
G1.arcs[4][1].adj=1;
for(i=0;i<5;i++)
visited[i]=0;
q=DFSTraverse(G);
w=DFSTraverse(G1);
if(q==1)
printf("A1是连通图\n");
else
printf("A1不是连通图\n");
if(w==1)
printf("A2是连通图\n");
else
printf("A2不是连通图\n");
return 0;
}
#include<stdio.h>
int visited[5];
typedef struct
{
int arcs[5][5];
}MGraph;
void DFS(MGraph G,int i,int &a)
{
int j;
visited[i]=1;
a++;
for(j=0;j<5;j++)
if(G.arcs[i][j]==1&&!visited[j])
DFS(G,j,a);
}
int DFSTraverse(MGraph G)
{
int b=0;
DFS(G,0,b);
if(b==5)
return 1;
else
return 0;
}
int main()
{
int i,q,w;
MGraph G={0};
MGraph G1={0};
G.arcs[0][1]=1;
G.arcs[0][3]=1;
G.arcs[1][0]=1;
G.arcs[1][2]=1;
G.arcs[1][4]=1;
G.arcs[2][1]=1;
G.arcs[3][1]=1;
G.arcs[4][1]=1;
G1.arcs[0][3]=1;
G1.arcs[1][2]=1;
G1.arcs[1][4]=1;
G1.arcs[2][1]=1;
G1.arcs[3][0]=1;
G1.arcs[4][1]=1;
for(i=0;i<5;i++)
visited[i]=0;
q=DFSTraverse(G);
w=DFSTraverse(G1);
if(q==1)
printf("A1是连通图\n");
else
printf("A1不是连通图\n");
if(w==1)
printf("A2是连通图\n");
else
printf("A2不是连通图\n");
return 0;
}
这两种写法是不是都可以