#include <iostream>
#include <string.h>
#include <queue>
using namespace std;
struct node{
int lchild,rchild;
}no[30];
int N,root;
bool notroot[30]={0};
int convert(char s[]){
if(s[0]=='-') return -1;
int len=strlen(s),sum=0;
for(int i=0;i<len;i++)
sum=10*sum+(s[i]-'0');
notroot[sum]=true; //
return sum;
}
void BFS(int root){
queue<int> q;
q.push(root);
bool ans=true;
int pre;
while(!q.empty()){
int t=q.front();
q.pop();
if(t==-1){
while(!q.empty()&&q.front()==-1)
q.pop();
if(!q.empty()) ans=false;
break;
}
q.push(no[t].lchild);
q.push(no[t].rchild);
pre=t;
}
if(ans) printf("YES %d",pre);
else printf("NO %d",root);
}
int main(){
//freopen("g:\\in.txt","r",stdin);
scanf("%d",&N);
for(int i=0;i<N;i++){
char str1[5],str2[5];
scanf("%s%s",str1,str2);
no[i].lchild=convert(str1);
no[i].rchild=convert(str2);
}
for(root=0;root<N;root++)
if(notroot[root]==false) break;
BFS(root);
return 0;
}
PAT A1110
最新推荐文章于 2021-12-02 15:40:08 发布