20分求调
查看原帖
20分求调
1032325
sunrainblue楼主2024/10/23 21:21

#include <bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 5; int n, m; bool vis[MAXN];

vector v[MAXN]; int x, y; inline int read() { int k = 0, f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); } while (c >= '0' && c <= '9') k = k * 10 + c - '0', c = getchar(); return k * f; } inline void write(int x) { if (x < 0) putchar('-'), x = -x; if (x < 10) putchar(x + '0'); else write(x / 10), putchar(x % 10 + '0'); } void dfs(int tx) { write(tx); putchar(' '); for (int i = 0; i < v[tx].size(); i++) { if (!vis[v[tx][i]]) { vis[v[tx][i]] = true; dfs(v[tx][i]); } } return; } void bfs(int tx) { queue q; q.push(tx); vis[tx] = true; while (!q.empty()) { int now = q.front(); write(now); putchar(' '); q.pop(); for (int i = 0; i < v[now].size(); i++) { if (!vis[v[now][i]]) { vis[v[now][i]] = true; q.push(v[now][i]); } } } return; } int main() { n = read(); m = read(); for (int i = 0; i < m; i++) { x = read(); y = read(); v[x].push_back(y); } for (int i = 1; i <= n; i++) { sort(v[i].begin(), v[i].end()); } memset(vis, 0, sizeof(vis)); dfs(1); putchar('\n'); memset(vis, 0, sizeof(vis)); bfs(1); return 0; }```cpp

2024/10/23 21:21
加载中...