这是什么毒瘤题

回复帖子

@star_magic_young 2018-07-09 20:40 回复

说好的网络流/二分图匹配裸题呢?怎么总是RE???

// luogu-judger-enable-o2
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#include<ctime>
#include<queue>
#include<map>
#define LL long long
#define il inline
#define re register

using namespace std;
const LL mod=998244353;
il LL rd()
{
    re LL x=0,w=1;re char ch;
    while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
    return x*w;
}
int n,p,m;
int to[40010],nt[40010],mat[40010],hd[40010],tot=1;
il void add(int x,int y)
{
  ++tot;to[tot]=y;nt[tot]=hd[x];hd[x]=tot;
}
bool v[40010];
il bool xyl(int x)
{
  for(re int i=hd[x];i;i=nt[i])
    {
      int y=to[i];
      if(!v[y])
       {
          v[y]=true;
        if(!mat[y]||xyl(mat[y]))
          {
           mat[y]=x;
           return true;
         }
     }
    }
  return false;
}

int main()
{
  int T;
  scanf("%d",&T);
  while(T--)
    {
      memset(mat,0,sizeof(mat));
      memset(hd,0,sizeof(hd));
      tot=1;
      scanf("%d%d",&n,&p);
      for(int j=1;j<=p;j++)
    {
      scanf("%d",&m);
      while(m--) 
      {
          int x;
          scanf("%d",&x);
          add(x,n+j);
      }
    }
      if(n<p) {puts("NO");continue;}
      int i;
      for(i=1;i<=p;i++)
     {
         memset(v,0,sizeof(v));
       if(!xyl(i)) break;
     }
        i>p?puts("YES"):puts("NO");
    }
  return 0;
}

真的恶心

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。