Pagini recente » Cod sursa (job #2428486) | Cod sursa (job #1364343) | Cod sursa (job #404487) | Cod sursa (job #2665639) | Cod sursa (job #866347)
Cod sursa(job #866347)
#include <fstream>
#define nmax (1<<10)
using namespace std;
int N,M,Sol,color,M1[nmax],M2[nmax];
bool A[nmax],B[nmax];
int Size(bool v[]) {
int i,Ans;
for(i=1,Ans=0;i<=N;i++)
if(v[i])
Ans++,Sol=i;
return Ans;
}
void Keep(int source[],bool dest[]) {
for(int i=1;i<=N;i++)
if(source[i]==color && dest[i]==1)
dest[i]=1;
else
dest[i]=0;
}
void Erase() {
for(int i=1;i<=N;i++)
if(M1[i]==color || M2[i]==color)
A[i]=B[i]=0;
}
int main() {
int i,k,r,x;
ifstream in("balanta.in");
ofstream out("balanta.out");
in>>N>>M;
for(int i=1;i<=N;i++)
A[i]=B[i]=1;
while(M--) {
color++;
in>>k;
for(i=1;i<=k;in>>x,M1[x]=color,i++);
for(i=1;i<=k;in>>x,M2[x]=color,i++);
in>>r;
if(r==0)
Erase();
else
if(r==1)
Keep(M1,B),
Keep(M2,A);
else
Keep(M1,A),
Keep(M2,B);
}
if(Size(A)+Size(B)==1)
out<<Sol<<'\n';
else
out<<"0\n";
in.close();
out.close();
return 0;
}