就是判断给出的图中是否存在完美匹配。
完美匹配:每个顶点只有一条边。
所以显然n是奇数或最后一个数没连边时,不存在;
否则,从后往前看
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int t,i,n,a[100010],cnt,flag;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
cnt=0;
for(i=1;i<n;i++)
scanf("%d",&a[i]);
if(n%2||a[n-1]!=1)
{
printf("No\n");
}
else
{
flag=0;
for(i=n-1;i>=1;i--)
{
if(a[i]==1)
cnt++;
else
cnt--;
if(cnt<0)
{
flag=1;
break;
}
}
if(flag)
printf("No\n");
else
printf("Yes\n");
}
}
}
//人一我百,人百我万
//时间