Pagini recente » Cod sursa (job #946744) | Cod sursa (job #1877427) | Cod sursa (job #1607537) | Cod sursa (job #1098252) | Cod sursa (job #678957)
Cod sursa(job #678957)
#include <cstdio>
#include <stdlib.h>
#include <time.h>
#define MAXP 105
#define MAXC 1005
using namespace std;
struct cond
{
int a, b, c;
}condition[MAXC];
bool v[MAXP];
int n,m;
void citire()
{
freopen("party.in", "r", stdin);
scanf("%d %d\n", &n, &m);
for(int i = 1; i <= m; i++)
{
scanf("%d %d %d", &condition[i].a, &condition[i].b, &condition[i].c);
}
fclose(stdin);
}
int check()
{
for(int i = 1; i <= m; i++)
{
switch(condition[i].c)
{
case 0:
{
if(!v[condition[i].a] && !v[condition[i].b])
return i;
break;
}
case 1:
{
if(!v[condition[i].a] && v[condition[i].b])
return i;
break;
}
case 2:
{
if(v[condition[i].a] && !v[condition[i].b])
return i;
break;
}
case 3:
{
if(v[condition[i].a] && v[condition[i].b])
return i;
break;
}
}
}
return -1;
}
void randomized()
{
int i, k;
srand(time(NULL));
while((i = check()) >= 0)
{
k = rand();
if(k % 2)
{
if(v[condition[i].a])
v[condition[i].a] = false;
else
v[condition[i].a] = true;
}
else
{
if(v[condition[i].a])
v[condition[i].a] = false;
else
v[condition[i].a] = true;
}
}
}
void afisare()
{
freopen("party.out", "w", stdout);
int value = 0, i;
for(i = 1; i <= n; i++)
{
if(v[i])
value++;
}
printf("%d\n", value);
for(i = 1; i <= n; i++)
{
if(v[i])
printf("%d\n", i);
}
fclose(stdout);
}
int main()
{
citire();
randomized();
afisare();
return 0;
}