#include <stdio.h>
#include <stdlib.h>
typedef struct MGraph
{
char vexs[100];
int arc[100][100];
int numVertexes;
int numEdges;
}MGraph;
void createMGraph(MGraph *g)
{
printf("input 顶点和边数:");
scanf("%d,%d",&g->numVertexes,&g->numEdges);
int i,j,k,w;
for(i=0;i< g->numVertexes;i++)
{
scanf("%c",&g->vexs[i]);
}
for(i=0;i< g->numVertexes;i++)
{
for(j=0;j< g->numVertexes;j++)
{
g->arc[i][j] = 65535;
}
}
for(k=0;k<g->numEdges;k++)
{
scanf("%d,%d,%d",&i,&j,&w);
g->arc[i][j] = w;
g->arc[j][i] = g->arc[i][j];
}
}
int visited[100];
void DFS(MGraph *g,int i)
{
visited[i] = 1;
printf("%c ",g->vexs[i]);
for(int j=0;j<g->numVertexes;j++)
{
if(g->arc[i][j] == 1 && !visited[j])
{
DFS(g,j);
}
}
}
void DFSTraverse(MGraph *g)
{
for(int i=0;i<g->numVertexes;i++)
{
visited[i] = 0;
}
for(int i=0;i<g->numVertexes;i++)
{
if(!visited[i])
{
DFS(g,i);
}
}
}
int main()
{
MGraph *g = (MGraph*)malloc(sizeof(MGraph));
createMGraph(g);
DFSTraverse(g);
return 0;
}