#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
#define MAXVEX 100
#define INFINITY 65535
typedef char VertexType;
typedef int EdgeType;
typedef int Boolean;
Boolean visted[MAXVEX];
typedef struct
{
int numVertexes, numEdges;
VertexType vex[MAXVEX];
EdgeType arc[MAXVEX][MAXVEX];
}MGragh;
void CreatMGragh( MGragh *G )
{
int i, j, w, k;
scanf("%d%d", &G->numVertexes, &G->numEdges);
for( i=0; i<G->numVertexes; i++ )
scanf("%c", &G->vex[i]);
for( i=0; i<G->numVertexes; i++ )
for( j=0; j<G->numVertexes; j++ )
G->arc[i][j] = INFINITY;
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];
}
}
void DFS(MGragh G, int i)
{
int j;
visted[i] = true;
printf("%c ", G.vex[i]);
for( j=0; j<G.numVertexes; j++ )
if( 1 == G.arc[i][j] && !visted[j] )
DFS(G, j);
}
void DFSTraveres(MGragh G)
{
int i;
for( i=0; i<G.numVertexes; i++ )
visted[i] = false;
for( i=0; i<G.numVertexes; i++ )
if( !visted[i] )
DFS(G, i);
}
void BFSTraveres(MGragh G)
{
int i, j;
queue<int> Q;
for( i=0; i<G.numVertexes; i++ )
visted[i] = false;
for( i=0; i<G.numVertexes; i++ )
{
if( !visted[i] )
{
visted[i] = true;
printf("%c ", G.vex[i]);
Q.push(i);
while( !Q.empty() )
{
i = Q.front();
Q.pop();
for( j=0; j<G.numVertexes; j++ )
if( 1 == G.arc[i][j] && !visted[j] )
{
visted[i] = true;
printf("%c ", G.vex[j]);
Q.push(j);
}
}
}
}
}
int main()
{
return 0;
}
#include <cstdio>
#include <queue>
using namespace std;
#define MAXVEX 100
#define INFINITY 65535
typedef char VertexType;
typedef int EdgeType;
typedef int Boolean;
Boolean visted[MAXVEX];
typedef struct
{
int numVertexes, numEdges;
VertexType vex[MAXVEX];
EdgeType arc[MAXVEX][MAXVEX];
}MGragh;
void CreatMGragh( MGragh *G )
{
int i, j, w, k;
scanf("%d%d", &G->numVertexes, &G->numEdges);
for( i=0; i<G->numVertexes; i++ )
scanf("%c", &G->vex[i]);
for( i=0; i<G->numVertexes; i++ )
for( j=0; j<G->numVertexes; j++ )
G->arc[i][j] = INFINITY;
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];
}
}
void DFS(MGragh G, int i)
{
int j;
visted[i] = true;
printf("%c ", G.vex[i]);
for( j=0; j<G.numVertexes; j++ )
if( 1 == G.arc[i][j] && !visted[j] )
DFS(G, j);
}
void DFSTraveres(MGragh G)
{
int i;
for( i=0; i<G.numVertexes; i++ )
visted[i] = false;
for( i=0; i<G.numVertexes; i++ )
if( !visted[i] )
DFS(G, i);
}
void BFSTraveres(MGragh G)
{
int i, j;
queue<int> Q;
for( i=0; i<G.numVertexes; i++ )
visted[i] = false;
for( i=0; i<G.numVertexes; i++ )
{
if( !visted[i] )
{
visted[i] = true;
printf("%c ", G.vex[i]);
Q.push(i);
while( !Q.empty() )
{
i = Q.front();
Q.pop();
for( j=0; j<G.numVertexes; j++ )
if( 1 == G.arc[i][j] && !visted[j] )
{
visted[i] = true;
printf("%c ", G.vex[j]);
Q.push(j);
}
}
}
}
}
int main()
{
return 0;
}