输入样例:
8 6
0 7
0 1
2 0
4 1
2 4
3 5
输出样例:
{ 0 1 4 2 7 }
{ 3 5 }
{ 6 }
{ 0 1 2 7 4 }
{ 3 5 }
{ 6 }
思路
图的数据量较小,所以选择用二维数组来表示。设置布尔型数组来记录边是否被访问过。
深度优先搜索(DFS)在于每次都沿着路径到不能再前进时才退回到最近的岔路口
广度优先搜索(BFS)遍历时使用一个队列,若队不空则取出队首结点,并将该节点可到达的未曾加入队列的结点入队,队空时结束。
在测试点1卡了好久,最后自己找到一个测试点1比较极端的情况及正确结果
代码
#include<bits/stdc++.h>
#define MAX 11
using namespace std;
int G[MAX][MAX]={
0};
bool vis[MAX]={
false};//记录边是否被访问过
bool inq[MAX]={
false};
queue<int> q;
//深度优先访问DFS
void DFS