8/1

图的存储和遍历

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

int n;
int a[15][15];
bool d[20];
bool b[20];
vector<int> g[15];

void dfs(int i){
    d[i]=true;
    cout<<i<<" ";
    for(int j=1; j<=n; j++){
        if(a[i][j]!=0 && d[j]==false){
            dfs(j);
        } 
    }
}

void bfs(){
    queue<int> q;
    q.push(1);
    while(!q.empty()){
        int y=q.front();
        b[1]=true;
        cout<<y<<" ";
        q.pop();
        for(int i=0; i<g[y].size(); i++){
            if(b[g[y][i]]==false){
                b[g[y][i]]=true;
                q.push(g[y][i]);
            }
        }
    }
}

int main(){
    int s=0;
    cin>>n;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            cin>>a[i][j];
        }
    }
    for(int i=1; i<=n; i++){
        cout<<i<<" ";
        for(int j=1; j<=n; j++){
            if(a[i][j]!=0){
                g[i].push_back(j);
                cout<<j<<" ";
            }
        }
        cout<<endl;
    }
    dfs(1);
    cout<<endl;
    bfs();
    cout<<endl;
    return 0;
}

 

posted @ 2023-08-01 15:01  竹余居居居居居  阅读(119)  评论(0)    收藏  举报