DFS用到 递归
int map[1000][1000];
int book[1000];//标记数组,标记该点已经遍历过了
void DFS(int s)
{
book[s] = 1; //把起点标记
int i;
for(i = 0;i < N;i++)
{
if(book[i]== 0 &&map[s][i] )//如果相连 且未被遍历, 就递归进去
{
DFS(i);
}
}
}
BFS 用到队列
void BFS(int s)
{
memset(book, 0, sizeof(book));//初始化标记数组
head = 0;//队列初始化
tail = 0;
que[tail++] = s;//起点入队并标记
book[s] = 1;
while(head!= tail)//BFS主要部分
{
int h = que[head];
for(i = 0;i <N;i++)
{
if(book[i] == 0 && map[h][i] == 1)
{
book[i] = 1;//标记入队的
que[tail++] = i;
}
}
head++;
}
}