图的存储和遍历
#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;
}