蒟蒻遇见后四个点MLE,捕捉失败,求神犇们解答:
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
vector<int> v[100001];
queue<int> q;
bool tag[100001];
void dfs(int super){
if(tag[super]){
printf("%d ", super);
tag[super] = false;
}
for(int i = 0; i < int(v[super].size()); i ++){
dfs(v[super][i]);
}
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
int from, to;
for(int i = 1; i <= m; i ++){
scanf("%d%d", &from, &to);
v[from].push_back(to);
}
for(int i = 1; i <= n; i ++){
sort(v[i].begin(), v[i].end());
}
for(int i = 1; i <= n; i ++){
tag[i] = true;
}
dfs(1);
for(int i = 1; i <= n; i ++){
tag[i] = true;
}
q.push(1);
printf("\n");
while(q.size() != 0){
for(int i = 0; i < int(v[q.front()].size()); i ++){
if(tag[v[q.front()][i]]){
q.push(v[q.front()][i]);
tag[v[q.front()][i]] = false;
}
}
printf("%d ", q.front());
q.pop();
}
return 0;
}