Pagini recente » Cod sursa (job #128635) | Cod sursa (job #1529130) | Cod sursa (job #1208655) | Cod sursa (job #1027963) | Cod sursa (job #374054)
Cod sursa(job #374054)
#include <cstdio>
#include <cstring>
#define file_in "party.in"
#define file_out "party.out"
#define Nmax 1010
int n,s[Nmax],m,K,nr;
int x[Nmax],y[Nmax],z[Nmax],v[Nmax];
char buffer[1<<23];
void read(int &aux)
{
aux = 0;
for(;buffer[K] < '0' || buffer[K] > '9';++K);
for(;buffer[K] >= '0' && buffer[K] <= '9';++K)
aux = aux * 10 + buffer[K] - '0';
}
int ok()
{
int i;
for (i=1;i<=m;++i)
{
if (z[i]==0)
{
if (s[x[i]]==0 && s[y[i]]==0) return 0;
}
if (z[i]==1)
{
if (/*(s[x[i]]==0 && s[y[i]]==1) ||*/ (s[x[i]]==0 && s[y[i]]==1)) return 0;
}
if (z[i]==2)
{
if ((s[x[i]]==1 && s[y[i]]==0)/* || (s[x[i]]==1 && s[y[i]]==0)*/) return 0;
}
if (z[i]==3)
{
if ((s[x[i]]==1 && s[y[i]]==1)/* || (s[x[i]]==1 && s[y[i]]==0) || (s[x[i]]==0 && s[y[i]]==1)*/) return 0;
}
}
return 1;
}
void subm()
{
int q,x,i,okk,nrr;
s[n]=1;
okk=1;
for (q=0;q<(1<<n) && okk;++q)
{
x=n;
while (s[x])
{
s[x]=0;
x--;
}
s[x]=1;
/* for (i=0;i<=n;++i)
printf("%d ", s[i]);
printf("\n");*/
nrr=0;
for (i=1;i<=n;++i)
if (!s[i]) nrr++;
if (ok() && nrr!=n)
{
nr=0;
for (i=1;i<=n;++i)
if (s[i]) nr++,v[nr]=i;
/*printf("%d\n", nr);
//printf("%d\n", i);
for (i=1;i<=nr;++i)
printf("%d\n", v[i]);*/
//okk=0;
}
}
}
int main()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
fread(buffer,1,1<<23,stdin);
read(n);
read(m);
for (i=1;i<=m;++i)
{
read(x[i]);
read(y[i]);
read(z[i]);
}
subm();
/* printf("1\n");
printf("12");*/
printf("%d\n", nr);
//printf("%d\n", i);
for (i=1;i<=nr;++i)
printf("%d\n", v[i]);
fclose(stdin);
fclose(stdout);
return 0;
}