-
Notifications
You must be signed in to change notification settings - Fork 1
/
01260.cpp
59 lines (49 loc) · 1.09 KB
/
01260.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
void dfs(vector<vector<bool> > &p, vector<bool> &visited, int cur) {
visited[cur] = true;
cout << cur << " ";
for (int i=1; i<p.size(); i++) {
if (p[cur][i] && !visited[i]) {
dfs(p, visited, i);
}
}
}
void bfs(vector<vector<bool> > &p, vector<bool> &visited, int cur) {
queue<int> q;
q.push(cur);
visited[cur] = true;
while (!q.empty()) {
cur = q.front();
q.pop();
cout << cur << " ";
for (int i=1; i<p.size(); i++) {
if (p[cur][i] && !visited[i]) {
q.push(i);
visited[i] = true;
}
}
}
}
void solve(void) {
int n, m, v, x, y;
cin >> n >> m >> v;
vector<vector<bool> > p(n+1, vector<bool>(n+1, false));
for (int i=0; i<m; i++) {
cin >> x >> y;
p[x][y] = p[y][x] = true;
}
vector<bool> visited(n+1, false);
dfs(p, visited, v);
cout << "\n";
fill(visited.begin(), visited.end(), false);
bfs(p, visited, v);
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
solve();
return 0;
}