#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
const int N = 100005;
vector<int> ALG[N];
int DFSv[N], BFSv[N];
queue<int> q;
void DFS(int v)
{
cout << v << ' '; DFSv[v] = 1;
for (auto it = ALG[v].begin(); it != ALG[v].end(); it++)
if(!DFSv[*it]) DFS(*it);
}
void BFS(int v)
{
cout << v << ' '; BFSv[v] = 1;
q.push(v);
while(!q.empty())
{
int i = q.front(); q.pop();
for (auto it = ALG[i].begin(); it != ALG[i].end(); it++)
{
if(!BFSv[*it]) {cout << *it << ' '; BFSv[*it] = 1;}
q.push(*it);
}
}
}
int main()
{
int v1, v2;
int vexnum, arcnum;
cin >> vexnum >> arcnum;
for (int i = 0; i < arcnum; i++)
{
cin >> v1 >> v2;
ALG[v1].push_back(v2);
}
for (int i = 1; i <= vexnum; i++) sort(ALG[i].begin(), ALG[i].end());
DFS(1); cout << '\n';
BFS(1);
}
不知道是哪里的原因。。。