N1:Stack Queue DFS BFS
2016-03-05 15:22
337 查看
#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;
}
相关文章推荐
- 让UITableViewCell的分隔线宽度等于屏幕的宽度
- UESTC 758 P酱的冒险旅途
- openstack-glance-api.service start request repeated too quickly, refusing to start
- HDU 1297 Children’s Queue 递归+大数
- iOS UIActionSheet提示框
- ugui 中有关grid layout group的适配问题
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- UITapGestureRecognizer 的使用,判断点击哪个控件
- QuickSort 快排算法 java
- require笔札
- Handler中的四种更新UI写法
- poj--3061--Subsequence(贪心)
- poj--3061--Subsequence(贪心)
- UESTC 758-P酱的冒险旅途【BFS】
- 今日开讲—— easyui-combobox动态赋值
- LeetCode 51 - N-Queens II
- Ngui 拖拽到底部,直接循环到顶部
- Uva1594 Ducci Sequence
- poj Subsequence 3061 (高效&DP)