Pagini recente » Cod sursa (job #2583499) | Cod sursa (job #1555671) | Cod sursa (job #319368) | Cod sursa (job #539907) | Cod sursa (job #659901)
Cod sursa(job #659901)
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("balanta.in");
ofstream g("balanta.out");
int n,m,st[1024],dr[1024],igr,iu,k;
int gr[1024],u[1024];
long long sgr=0,su;
void intersect(int *a,int *b){
for(register int i=1;i<=n;i++)
a[i]=a[i]*b[i];
}
void dif(int *a,int *b){
for(register int i=1;i<=n;i++){
if(a[i] && !b[i])
a[i]=1;
else
a[i]=0;
}
}
int main(void){
register int i,j,r,x;
f>>n>>m;
for(i=1;i<=n;i++)
gr[i]=u[i]=1;
for(i=1;i<=m;i++){
f>>k;
memset(st,0,sizeof(st));
memset(dr,0,sizeof(dr));
for(j=1;j<=k;j++){
f>>x;
st[x]=1;
}
for(j=1;j<=k;j++){
f>>x;
dr[x]=1;
}
f>>r;
if(r==0){
//echilibru
dif(gr,st);
dif(gr,dr);
dif(u,st);
dif(u,dr);
}
else if(r==1){
intersect(gr,st);
intersect(u,dr);
}
else{
intersect(gr,dr);
intersect(u,st);
}
}
int pu,pgr;
for(i=1;i<=n;i++){
if(gr[i]==1){
igr++;
pgr=i;
}
if(u[i]==1){
iu++;
pu=i;
}
}
if(igr==1 && iu==0)
g<<pgr;
else if(iu==1 && igr==0)
g<<pu;
else
g<<"0";
f.close();
g.close();
return 0;
}