Pagini recente » Cod sursa (job #66069) | Cod sursa (job #2860840) | Istoria paginii moisil-2015/clasament/1112 | Monitorul de evaluare | Cod sursa (job #518514)
Cod sursa(job #518514)
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define NMAX 200010
pair <int, int> E[NMAX];
int V[NMAX];
int n, m;
inline int valoare(int x){
if(x < 0) return 1-V[-x];
return V[x];
}
inline int not_valid(){
for(int i = 1; i <= m; ++i)
if(valoare(E[i].first) || valoare(E[i].second) );
else return i;
return 0;
}
int main(){
clock_t start = clock();
freopen("2sat.in", "r", stdin);
freopen("2sat.out", "w", stdout);
scanf("%d%d", &n, &m);
srand(time(NULL));
for(int i = 1; i <= m; ++i)
scanf("%d%d", &E[i].first, &E[i].second);
for(int i = 1; i <= n; ++i)
V[i] = rand()%2;
for(int p;p = not_valid();){
if(rand()%2)
V[abs(E[p].first)] ^= 1;
else V[abs(E[p].second)] ^= 1;
if( (double) (clock()-start)/CLOCKS_PER_SEC >= 1.67){
printf("-1\n");
return 0;
}
}
for(int i = 1; i <= n;++i)
printf("%d ", V[i]);
return 0;
}