Pagini recente » Cod sursa (job #2602283) | Cod sursa (job #2842639) | Cod sursa (job #1275957) | Cod sursa (job #1601315) | Cod sursa (job #114249)
Cod sursa(job #114249)
#include <cstdio>
#include <time.h>
#include <stdlib.h>
#define fin "party.in"
#define fout "party.out"
const int Nmax = 101;
const int Mmax = 1001;
int N,M,stare[Nmax],reqx[Mmax],reqy[Mmax],reqt[Mmax];
void readdata()
{
int i;
freopen(fin,"r",stdin);
scanf("%d%d",&N,&M);
for (i=1;i<=M;++i)
scanf("%d%d%d",&reqx[i],&reqy[i],&reqt[i]);
}
void solve()
{
int i,j,x,y,val=0,cnt=0;
srand(time(0));
for (i=1;i<=N;++i)
if (rand()&3)
stare[i]=1;
else
stare[i]=0;
for (;;)
{
for (i=1;i<=M;++i)
{
x=stare[reqx[i]];
y=stare[reqy[i]];
if ( reqt[i] == 0 )
val=( x | y );
if ( reqt[i] == 1 )
val=( x | (y^1) );
if ( reqt[i] == 2 )
val=( (x^1) | y );
if ( reqt[i] == 3 )
val=( (x^1) | (y^1) );
if ( val == 0 )
{
if (rand()&3)
stare[reqx[i]]^=1;
else
stare[reqy[i]]^=1;
break;
}
}
cnt=0;
for (j=1;j<=N;++j)
cnt+=stare[j];
if ( i > M && cnt ) break;
}
cnt=0;
for ( i = 1; i <= N ; ++i )
cnt+=stare[i];
freopen(fout,"w",stdout);
printf("%d\n",cnt);
for ( i = 1; i <= N ; ++i )
if (stare[i]) printf("%d\n",i);
}
int main()
{
readdata();
solve();
return 0;
}