POJ 1469
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define N 3005
int vis[N],m[N];
int n,p,x,k,t;
vector<int> e[N];
bool dfs(int u,int t)
{
if(vis[u]==t)
return false;
vis[u]=t;
for(int v=0;v<e[u].size();v++)
if(!m[v]||dfs(m[v],t))
{
m[v]=u;
return true;
}
return false;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&p);
for(int i=1;i<=n;i++)
{
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
scanf("%d",&x);
e[k].push_back(x);
}
}
int ans=0;
for(int i=1;i<=n;i++)
if(dfs(i,i))
ans++;
printf(ans==n?"YES\n":"NO\n");
}
return 0;
}
喜提 WA 大礼包。
求调!在线等,挺急的。离线等吧,不急