堆
题目描述
输入
输出
样例输入
3
1
10
3
10 5 3
1 2
1 3
5
1 2 3 4 5
3 1
2 1
2 4
2 5
样例输出
Yes
No
Yes
程序代码
#include<stdio.h>
#include<string.h>
#define N 120
int d[N][N];
int main()
{
int a[N],x,y,n,i,j,t,flag;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
d[x][y]++;
}
flag=1;
for(i=1;i<n;i++)
{
for(j=1;j<n;j++)
if(d[i][j]!=0)
if(i>j&&a[i]<a[j]||i<j&&a[i]>a[j])
flag=0;
if(flag==0)
break;
}
if(flag==1)
printf("Yes\n");
else
printf("No\n");
memset(d,0,sizeof(d));
}
return 0;
}