Pagini recente » Cod sursa (job #803858) | Cod sursa (job #2543842) | Cod sursa (job #2091478) | Cod sursa (job #2384475) | Cod sursa (job #467122)
Cod sursa(job #467122)
#include <cstdio>
#include <stdlib.h>
#include <ctime>
#define Nmax 100010
#define Mmax 200010
struct muchie {int x, y, c;} M[Mmax];
int n, m;
int sol[Nmax];
void citire () {
scanf ("%d %d", &n, &m);
for (int i = 1; i <= m; i++)
scanf ("%d %d %d", &M[i].x, &M[i].y, &M[i].c);
}
void rezolva () {
int i, ok = 0, nod;
for (ok = 0; !ok; ) {
ok = 1;
for (i = 1; i <= m; i++) {
if (M[i].c == 0) {
if ( !sol[ M[i].x ] && !sol[M[i].y] ) {
if ( (rand()&1) == 0 ) {
ok = 0;
nod = M[i].x;
break;
}
else {
ok = 0;
nod = M[i].y;
break;
}
}
}
else {
if (M[i].c == 1) {
if ( sol[ M[i].x ] && sol[M[i].y] ) {
if ( (rand()&1) == 0 ) {
ok = 0;
nod = M[i].x;
break;
}
else {
ok = 0;
nod = M[i].y;
break;
}
}
}
else {
if ( sol[ M[i].x ] != sol[M[i].y] ) {
if ( (rand()&1) == 0 ) {
ok = 0;
nod = M[i].x;
break;
}
else {
ok = 0;
nod = M[i].y;
break;
}
}
}
}
}
if (ok) return ;
if (sol[nod] == 1) sol[nod] = 0;
else sol[nod] = 1;
}
}
int main () {
freopen ("andrei.in", "r", stdin);
freopen ("andrei.out", "w", stdout);
citire ();
rezolva ();
for (int i = 1; i <= n; i++)
printf ("%d ", sol[i]);
return 0;
}