哪错了捏
查看原帖
哪错了捏
1365062
Deric456楼主2025/7/28 16:05
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

const int MAXN = 10005;
vector<int> adj[MAXN];
bool visited[MAXN];

void dfs(int u, vector<int>& result) {
    visited[u] = true;
    result.push_back(u);
    
    for (int v : adj[u]) {
        if (!visited[v] && v >= 1 && v <= MAXN) {
            dfs(v, result);
        }
    }
}

vector<int> bfs(int start, int n) {
    vector<int> result;
    queue<int> q;
    fill(visited, visited + MAXN, false);
    
    if (start < 1 || start > n) return result;
    
    q.push(start);
    visited[start] = true;
    
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        result.push_back(u);
        
        for (int v : adj[u]) {
            if (!visited[v] && v >= 1 && v <= n) {
                visited[v] = true;
                q.push(v);
            }
        }
    }
    
    return result;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n, m;
    if (!(cin >> n >> m)) return 0;
    
    if (n <= 0 || n > 1000 || m < 0 || m > 10000) return 0;
    
    for (int i = 0; i < m; i++) {
        int u, v;
        if (!(cin >> u >> v)) return 0;
        if (u >= 1 && u <= n && v >= 1 && v <= n) {
            adj[u].push_back(v);
        }
    }
    
    for (int i = 1; i <= n; i++) {
        sort(adj[i].begin(), adj[i].end());
    }
    
    vector<int> dfs_result;
    fill(visited, visited + MAXN, false);
    dfs(1, dfs_result);
    
    vector<int> bfs_result = bfs(1, n);
    
    for (size_t i = 0; i < dfs_result.size(); i++) {
        if (i > 0) cout << " ";
        cout << dfs_result[i];
    }
    cout << endl;
    
    for (size_t i = 0; i < bfs_result.size(); i++) {
        if (i > 0) cout << " ";
        cout << bfs_result[i];
    }
    cout << endl;
    
    return 0;
}
2025/7/28 16:05
加载中...