是一个图的遍历的题 ,P5318
因为数据范围的限制,要用邻接表存图,用vector
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n,m;
bool vis[maxn];
queue<int> b;
vector<int> point[maxn];
void dfs(int st,int cnt)
{
vis[st]=1;
printf("%d ",st);
if(cnt==n) return; // 这个图是连通的,所以输出了所有点就可以结束
for(int i=0;i<point[st].size();i++)
if(!vis[point[st][i]]) dfs(point[st][i],cnt+1); // 注意是会有重复的
}
void bfs(int st) // bfs用队列
{
vis[st]=1;
b.push(st);
while(!b.empty())
{
int tmp=b.front();b.pop();
printf("%d ",tmp);
for(int i=0;i<point[tmp].size();i++)
if(!vis[point[tmp][i]])
{