Pagini recente » Grupuri | Felinare | Renovare | Panou | Cod sursa (job #33766)
Cod sursa(job #33766)
#include<fstream.h>
#include<math.h>
ifstream f("party.in");
ofstream g("party.out");
long long q;
int a(long long x)
{
long long l=pow(2,x-1);
if((q & l)!=0)return 1;
else return 0;
}
int zero(int x,int y)
{
if((a(x)+a(y))!=1)return 0;
return 1;
}
int unu(int x,int y)
{
if(!a(x) && a(y))return 0;
return 1;
}
int doi(int x,int y)
{
return unu(y,x);
}
int trei(int x,int y)
{
if(a(x) && a(y))return 0;
return 1;
}
typedef struct _cond
{
int x,y,c;
}Cond;
int main()
{
int n,m,i,ok,k=0;
long long qmax=pow(2,n)-1;
Cond c[1001];
f>>n>>m;
qmax=pow(2,n)-1;
for(i=1;i<=m;i++)
f>>c[i].x>>c[i].y>>c[i].c;
for(q=1;q<=qmax;q++)
{
ok=1;
for(i=1;i<=m && ok;i++)
{
switch(c[i].c)
{
case 0:ok=zero(c[i].x,c[i].y);break;
case 1:ok=unu(c[i].x,c[i].y);break;
case 2:ok=doi(c[i].x,c[i].y);break;
case 3:ok=trei(c[i].x,c[i].y);break;
}
}
if(ok)
{
k=0;
for(i=1;i<=n;i++)k+=a(i);
g<<k<<"\n";
for(i=1;i<=n;i++)
if(a(i))
g<<i<<"\n";
//g.close();
return 0;
}
}
g.close();
return 0;
}