BFS树的宽搜
由于每个点是依次编号的,所以可以用数学的方法统计没有出现的数据。
树的BFS是从上到下的,和图不同,不需要标记。
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 1e3+7;
const int M = 5e4+7;
vector<int> T[11];
void dfs(int u){
queue<int> q;
q.push(u);
bool flag = false;
while(q.size()){
int t = q.front();
q.pop();
if(!T[t].size()){
if(!flag){
cout<<t;
flag = true;
}else
cout<<" "<<t;
}
for(int j = 0; j < T[t].size(); j++){
q.push(T[t][j]);
}
}
}
int main(){
int n, t, sum;
cin>>n;
sum = n*(n-1)/2;
string str;
getchar();
for(int i = 0; i < n; i++){
getline(cin, str);
if(str[0] != '-') {
t = str[0]-'0';
T[i].push_back(t);
sum -= t;
}
if(str[2] != '-') {
t = str[2]-'0';
T[i].push_back(t);
sum -= t;
}
}
dfs(sum);
return 0;
}