HDU---6029 Graph Theory 【二分图匹配思想相关运用】

是一道水题,前提能读懂题!

有许多点,操作从第二点开始,每个点都有以下两个操作
1: 把当前点与前面所有的点相连
2: 不对当前点做任何操作.

问在最后的这些边的集合中,能否选择一些边,使得这些边没有公共的点,且所有的点都被这些边所覆盖.
题都读懂了,就好做了赛

#include
using namespace std;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        int res=1;   //表示当前没有被覆盖的点.
        scanf("%d",&n);
        for(int i=2;i<=n;i++){
            int u;
            scanf("%d",&u);
            if(u==2 || res==0)   //注意当res等于0时,res要++,因为是从最后的边中选择一些边,所以可以把3当做是
//没有被覆盖的(因为就算3的操作为1,它与1,2点连的边,我们也不会去选!),在之后是可以认为可以再次覆盖它的!!!
                res++;
            else
                res--;
        }
        if(res==0)
            printf("Yes\n");
        else
            printf("No\n");
    }
}

你可能感兴趣的:(HDU---6029 Graph Theory 【二分图匹配思想相关运用】)