本人为了这个学的vector
写出来之后提交MLE
#include<bits/stdc++.h>
using namespace std;
vector<int> a[100005];
int n,m;
bool f[100005];
vector<int> b;
void dfs(int w){//dfs遍历
// if(a[w].size()==0) return ;
cout<<w<<' ';
for(int i=0; i<a[w].size(); i++){
if(f[a[w][i]]==false){
dfs(a[w][i]);
f[a[w][i]]=true;
}
}
return ;
}
int main(){
cin>>n>>m;
for(int i=1; i<=m; i++){
int x,y;
x=y=0;
cin>>x>>y;
a[x].push_back(y);
}
f[1]=true;//第一个点开始搜索
for(int i=1; i<=n; i++)//因为要从小到大输出,所以排序一次
if(a[i].size()>1) sort(a[i].begin(),a[i].end());
dfs(1);
cout<<endl;
for(int i=1; i<=n; i++){//初始化记录
f[i]=false;;
}
f[1]=true;
b.push_back(1);//用vector记录,因为不会用队列 T_T
int p=1;
for(int i=1; i<=p; i++){//广搜遍历
cout<<b[i-1]<<' ';
int w=b[i-1];
if(a[w].size()>0){
for(int j=0; j<a[w].size(); j++){
if(f[a[w][j]]==false){
b.push_back(a[w][j]);
f[a[w][j]]=true;
p++;
}
}
}
}
//不知道为什么会MLE爆内存
return 0;
}
知道MLE
但是不知道怎么解决。。。
大部分概念不清楚T_T