【HDU6029】Graph Theory(贪心+队列)

来源:互联网 发布:标书软件破解版 编辑:程序博客网 时间:2024/06/07 22:00

记录一个菜逼的成长。。

题目链接

题目大意:
T组数据,n个点。
对于编号为2~n的每个点,有两种选择:
1.这个点与之前的所有点连条边。
2.什么边都不连
问给你的这个图是否存在完美匹配。

用队列维护没有被匹配的点
初始只有编号为1的点。
接下来对于每个点
如果选择第2个操作,说明这个点不能主动去匹配,只能被动由其他点来匹配,所以放入队列。
如果选择第一个操作,说明可以去匹配,就将队头元素匹配给它。
如果此时队列为空,则不能匹配,放入队列。
(wa了好多次。。真是尴尬

#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#define cl(a,b) memset(a,b,sizeof(a))#define clr clear()#define pb push_back#define mp make_pair#define fi first#define se secondtypedef long long LL;const LL MOD = 1e9 + 7;const int maxn = 100000 + 10;int a[maxn];int main(){    int T;scanf("%d",&T);    while(T--){        queue<int>q;        q.push(1);        int n;        scanf("%d",&n);        for( int i = 2; i <= n; i++ ){            scanf("%d",a+i);            if(a[i] == 2)q.push(i);            else {                if(!q.empty())q.pop();                else q.push(i);            }        }        puts(q.empty() ? "Yes" : "No");    }    return 0;}
0 0
原创粉丝点击