Pagini recente » Cod sursa (job #2014085) | Cod sursa (job #3289964) | Cod sursa (job #1111529) | Cod sursa (job #346046) | Cod sursa (job #145874)
Cod sursa(job #145874)
#include<fstream.h>
#include<stdlib.h>
#include<time.h>
int n,m,v[100],i,k,h;
long t;
struct {int a,b;}x[100];
int eval()
{
int i,y,z;
for(i=0;i<m;i++)
{
if(x[i].a>0) y=v[x[i].a];
else
{
y=v[-x[i].a];
if(y==0) y=1;
else y=0;
}
if(x[i].b>0) z=v[x[i].b];
else
{
z=v[-x[i].b];
if(z==0) z=1;
else z=0;
}
if(y+z==0) return i;
}
return -1;
}
int main()
{
int caz;
ifstream fin("fis.in");
ofstream fout("fis.out");
fin>>n>>m;
randomize();
for(i=0;i<m;i++)
{
fin>>x[i].a>>x[i].b>>caz;
switch(caz)
{
case 1: x[i].b=-x[i].b; break;
case 2: x[i].a=-x[i].a; break;
case 3: x[i].a=-x[i].a;
x[i].b=-x[i].b; break;
}
}
for(t=0;t<1000000000;t++)
{
for(i=1;i<=n;i++) v[i]=rand()%2;
k=eval();
if(k==-1)
{
k=0;
for(i=1;i<=n;i++) k+=v[i];
fout<<k<<endl;
for(i=1;i<=n;i++) if(v[i]==1) fout<<i<<endl;
fin.close();
fout.close();
return 0;
}
h=rand()%2;
if(h==0)
{
if(x[k].a>0) v[x[k].a]=1-v[x[k].a];
else v[-x[k].a]=1-v[-x[k].a];
}
else
{
if(x[k].b>0) v[x[k].b]=1-v[x[k].b];
else v[-x[k].b]=1-v[-x[k].b];
}
}
fout<<"Nu exista solutie";
fin.close();
fout.close();
return 0;
}