#include<bits/stdc++.h>
using namespace std;
vector<int>v[10005];
int in[10005];
int te[1005];
//int vis[1000005];
int cnt=0;
string s;
int dfs(int x){
// cout<<x<<" "<<cnt<<endl;
if(x==0){
if(s[cnt++]=='1'){
return 1;
}else{
return 0;
}
}
if(te[x]==3){
return !dfs(v[x][0]);
}else if(te[x]==2){
return dfs(v[x][0])|dfs(v[x][1]);
}else{
return dfs(v[x][0])&dfs(v[x][1]);
}
}
int main(){
int n,m;
cin>>n;
for(int i=1;i<=n;i++){
int a,b,c;
cin>>a;
te[i]=a;
if(a==3){
cin>>b;
in[b]++;
v[i].push_back(b);
}else{
cin>>b>>c;
in[b]++;
in[c]++;
v[i].push_back(b);
v[i].push_back(c);
}
}
int x;
for(int i =0 ; i < n ;i++){
if(in[i]==0){
x=i;
}
}
cin>>m;
while(m--){
cin>>s;
cnt=0;
if(dfs(x)){
cout<<"Ai"<<endl;
}else{
cout<<"BuAi"<<endl;
}
}
return 0;
}
该程序读取用户输入的图结构信息,使用深度优先搜索策略进行逻辑运算(与、或、非)。根据给定的节点连接关系,判断从特定节点开始的路径是否满足特定条件。程序最后输出‘Ai’或‘BuAi’,表示满足或不满足条件。
352






