求助,后四个点re,不知道为什么
查看原帖
求助,后四个点re,不知道为什么
287266
Viottery楼主2020/11/1 20:37

用vector存图和正常的dfs bfs

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

vector<int> v[100005];
bool vb[100005]={0};
bool vd[100005]={0};
void dfs(int c){
    cout << c << " ";
    vb[c]=1;
    for(int i=0;i<v[c].size();i++){
        if(!vb[v[c][i]]){
            dfs(v[c][i]);
        }
    }
}

void bfs(int c){
    queue<int> q;
    q.push(c);
    cout << c << " ";
    vd[c]={1};
    while(!q.empty()){
        int head=q.front();
        for(int i=0;i<v[head].size();i++){
            int point=v[head][i];
            if(!vd[point]){
                q.push(point);
                vd[point]=true;
                cout << point << " ";
            }
        }
        q.pop();
    }
}

int main(){
    ios::sync_with_stdio(false);
    int n,k;
    cin >> n >> k;
    for(int i=1;i<=k;i++){
        int a,b;
        cin >> a >> b;
        v[a].push_back(b);
//        v[b].push_back(a);
    }
    for(int i=1;i<=k;i++){
        sort(v[i].begin(),v[i].end());
    }
    
    //DFS
    dfs(1);
    cout << endl;
    bfs(1);
}

还望大佬帮助

2020/11/1 20:37
加载中...