Pagini recente » Borderou de evaluare (job #3027961) | Cod sursa (job #965729) | Cod sursa (job #2050127) | Cod sursa (job #2493513) | Cod sursa (job #65377)
Cod sursa(job #65377)
#include <stdio.h>
#include <string.h>
#define max 1025
int g[max];
int u[max];
int n,m;
int a[max],b[max];
int eu,eg;
void init()
{
memset(g,0,sizeof(g));
memset(u,0,sizeof(u));
}
void readdata()
{
scanf("%d %d\n",&n,&m);
for(int i=1;i<=n;i++) g[i]=u[i]=1;
}
void intersect(int r)
{
if(r==1)
{
for(int i=1;i<=n;++i)
{
if(!(a[i] && g[i]))
{
if(g[i]) eg--;
g[i]=0;
}
if(!(b[i] && u[i]))
{
if(u[i]) eu--;
u[i]=0;
}
}
}
else
{
for(int i=1;i<=n;++i)
{
if(!(a[i] && u[i]))
{
if(u[i]) eu--;
u[i]=0;
}
if(!(b[i] && g[i]))
{
if(g[i]) eg--;
g[i]=0;
}
}
}
}
void difference()
{
for(int i=1;i<=n;++i)
{
if(a[i] || b[i])
{
if(g[i]) eg--;
if(u[i]) eu--;
u[i]=g[i]=0;
}
}
}
int main()
{
freopen("balanta.in","r",stdin);
freopen("balanta.out","w",stdout);
init();
readdata();
eu=eg=n;
int e,x,r;
int i,j;
for(i=0;i<m;++i)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%d",&e);
for(j=0;j<e;++j)
{
scanf("%d",&x);
a[x]=1;
}
for(j=0;j<e;++j)
{
scanf("%d",&x);
b[x]=1;
}
scanf("%d",&r);
if(r==0) difference();
else intersect(r);
}
if(eu==0 && eg==1) for(i=1;i<=n;++i) if(g[i]) { printf("%d ",i); break; }
if(eu==1 && eg==0) for(i=1;i<=n;++i) if(u[i]) { printf("%d ",i); break; }
if(eu && eg) printf("0");
return 0;
}