Pagini recente » Cod sursa (job #779641) | Cod sursa (job #3177995) | Cod sursa (job #2891183) | Cod sursa (job #3162027) | Cod sursa (job #786270)
Cod sursa(job #786270)
#include <stdio.h>
#include <stdlib.h>
struct rel{int a,b,z;};
int n,m;
rel x[1000];
char v[101];
void citire()
{FILE *fin=fopen("party.in","rt");
fscanf(fin,"%d%d",&n,&m);
int i;
for (i=0;i<m;++i)
fscanf(fin,"%d%d%d",&x[i].a,&x[i].b,&x[i].z);
fclose(fin);}
int check()
{int i;
for (i=0;i<m;++i)
switch(x[i].z){
case 0:{if (v[x[i].a]==0 && v[x[i].b]==0) return i;break;}
case 1:{if (v[x[i].a]==0 && v[x[i].b]==1) return i;break;}
case 2:{if (v[x[i].a]==1 && v[x[i].b]==0) return i;break;}
case 3:{if (v[x[i].a]==1 && v[x[i].b]==1) return i;break;}
}
return -1;}
void aleator()
{int i,k=0,q=32677;
for (i=0;i<=n;++i) v[i]=0;
while ((i=check())!=-1)
{k=rand()&q;
if (k<16384)
if (v[x[i].a]==1) v[x[i].a]=0; else v[x[i].a]=1;
else
if (v[x[i].b]==1) v[x[i].b]=0; else v[x[i].b]=1;
}
}
void afisare()
{FILE *fout=fopen("party.out","wt");
int i,nr=0;
for (i=1;i<=n;++i)
if (v[i]==1) ++nr;
fprintf(fout,"%d\n",nr);
for (i=1;i<=n;++i)
if (v[i]==1) fprintf(fout,"%d\n",i);
fclose(fout);}
int main()
{citire();
aleator();
afisare();
return 0;}