Pagini recente » Cod sursa (job #1747163) | Cod sursa (job #904660) | Cod sursa (job #118627) | Cod sursa (job #412963) | Cod sursa (job #1169816)
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream f("party.in");
ofstream g("party.out");
#define nmax 105
bool val[nmax], sat[1005];
int n, m, x[nmax], y[nmax], z[nmax], sol;
bool satisfiable(int i)
{
//cout << val[x[i]] << " " << val[y[i]] << " " << z[i] << " " << endl;
if (z[i] == 0)
if ((val[x[i]] || val[y[i]]) == 0)
return false;
if (z[i] == 1)
if ((val[x[i]] || !val[y[i]]) == 0)
return false;
if (z[i] == 2)
if ((!val[x[i]] || val[y[i]]) == 0)
return false;
if (z[i] == 3)
if ((!val[x[i]] || !val[y[i]]) == 0)
return false;
return true;
}
int main()
{
f >> n >> m;
for (int i = 0; i < m; i ++)
f >> x[i] >> y[i] >> z[i];
srand(time(NULL));
for (int i = 1; i <= n; i ++)
val[i] = rand() % 2;
for (int i = 0; i < m; i ++)
{
sat[i] = satisfiable(i);
if (!sat[i])
{
bool luck = rand() % 2;
if (luck)
val[x[i]] = !val[x[i]];
else
val[y[i]] = !val[y[i]];
sat[i] = satisfiable(i);
}
}
for (int i = 1; i <= n; i ++)
sol += val[i];
g << sol << '\n';
for (int i = 1; i <= n; i ++)
if (val[i])
g << i << '\n';
f.close();
g.close();
return 0;
}