【求助】过了样例但0分
查看原帖
【求助】过了样例但0分
485403
wanghaoyu0924楼主2023/3/17 19:03

能够跑通样例

#include<bits/stdc++.h>
using namespace std;

int n, m; // n个点、m条边
vector<bool> vis; // 每个点是否访问过
vector<vector<int>> adj_list; // 临接链表


void dfs(int u) { 
    if (vis[u]) return;
    vis[u] = true;
    cout<<u<<" ";
    for (int i = 0; i < adj_list[u].size(); ++i) 
        dfs(adj_list[u][i]);
}


void bfs(int u) {
    queue<int> Q;
    Q.push(u);
    vis[u] = 1;
    int v;
    while (!Q.empty()) {
        u = Q.front();
        Q.pop();
        cout<<u<<" ";
        for (int i = 0; i < adj_list[u].size(); ++i){
            v = adj_list[u][i];
            if (!vis[v]) {
                Q.push(v);
                vis[v] = 1; // 防止重复入队
            }
        }
    }
}




int main(){
    cin >> n >> m;

    vis.resize(n + 1, false); // 初始化
    adj_list.resize(n + 1);
    int u, v;
    for (int i = 1; i <= m; ++i) {
        cin >> u >> v;
        adj_list[u].push_back(v); // 计入邻接链表
    }
    dfs(1);
    for(int i = 0; i<= n; i++){
        vis[i] = false;
    }
    cout<<endl;
    bfs(1);

    return 0;
}
2023/3/17 19:03
加载中...