Pagini recente » Cod sursa (job #1827795) | Cod sursa (job #604272) | Cod sursa (job #481022) | Cod sursa (job #2957389) | Cod sursa (job #729850)
Cod sursa(job #729850)
#include<iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
typedef struct { long a,b,c; } ceva;
ceva T[200005];
bool V[100005];
long n,i,ok,bad,a,b,c,m;
ifstream in("andrei.in");
ofstream out("andrei.out");
bool check ( long vf )
{
if ( T[vf].c==0 )
{
// sa nu existe vreo muchie colorata in alb intre doua noduri din A;
if ( V[T[vf].a]==0 && V[T[vf].b]==0)
return 0;
return 1;
}
if ( T[vf].c==1 )
{
//sa nu existe vreo muchie colorata in rosu intre doua noduri din B;
if ( V[T[vf].a]==1 && V[T[vf].b]==1)
return 0;
return 1;
}
if ( T[vf].c==2 )
{
//sa nu existe vreo muchie colorata in violet intre un nod din A si unul din B.
if ( V[T[vf].a] != V[T[vf].b] )
return 1;
return 0;
}
}
int main()
{
in>>n>>m;
for ( i=1; i<=m; i++ )
{
in>>a>>b>>c;
T[i].a=a;
T[i].b=b;
T[i].c=c;
}
ok=1;
while ( ok )
{
// verificam
ok=0;
for ( i=1; i<=m&&!ok; i++ )
{
if ( !check(i) )
{
bad=i;
ok=1;
}
}
if ( ok )
{
a=rand()%2;
if ( a )
V[T[bad].a]++,V[T[bad].a]%=2;
else
V[T[bad].b]++,V[T[bad].b]%=2;
}
}
for ( i=1; i<=n; i++ )
out<<V[i]<<" ";
}