Pagini recente » Cod sursa (job #1970515) | Cod sursa (job #1082773)
#include <fstream>
#include <iostream>
#include <cstdlib>
std::ifstream fin("party.in");
std::ofstream fout("party.out");
#define For(i, st, dr) for (int (i) = (st); (i) <= (dr); ++(i))
const int MAXN = 110;
const int MAXM = 1100;
int n, m, sol[MAXN], expresie[MAXM][2];
void read() {
fin >> n >> m;
For (i, 1, m) {
int type;
fin >> expresie[i][0] >> expresie[i][1] >> type;
if (type == 1 || type == 3) expresie[i][1] = -expresie[i][1];
if (type == 2 || type == 3) expresie[i][0] = -expresie[i][0];
}
}
bool eval(int a, int b) {
int x, y;
x = sol[std::abs(a)];
y = sol[std::abs(b)];
if (a < 0) x ^= 1;
if (b < 0) y ^= 1;
return x | y;
}
void solve() {
For (i, 1, n)
sol[i] = rand() % 2;
for(;;) {
int poz = 0;
For (i, 1, m) {
if (!eval(expresie[i][0], expresie[i][1])) {
poz = i;
break;
}
}
if (!poz) break;
if ((rand() % 2) == 0)
sol[expresie[poz][0]] ^= 1;
else
sol[expresie[poz][1]] ^= 1;
}
}
void print() {
int sum = 0;
For (i, 1, n)
sum += sol[i];
fout << sum << "\n";
For (i, 1, n)
if (sol[i])
fout << i << "\n";
}
int main() {
read();
solve();
print();
return 0;
}