#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i;
int flag;
int num;
int fact[3];//fact[i]==0代表i为真,fact[i]==0代表i为假,0,1,2分别代表P,Q,R ;
int work[2][2]={{0,1},{1,2}};//0可推出1,1可推出2;
fact[0]=1;//初始条件 0为真
num=0;//辅助变量,只为了第一次能够进入循环,一旦进入后就失去作用;
flag=0;//用于检测事实库是否有更新;
while(num==0||flag==1)//当上一次循环有效时,才执行下一次循环
{
flag=0;
num=1; //将此变量作废
for(i=0;i<2;i++)
{
if(fact[work[i][0]]==1&&fact[work[i][1]]!=1)//前件为1且后件为0,代表还未更新
{
fact[work[i][1]]=1;//更新
flag=1;//若事实库有更新,则代表这次循环有效
}
}
}
if(fact[2]==1)//所需结论为真
{
printf("Yes\n");
}
else printf("No\n");
return 0;
}