Pagini recente » Cod sursa (job #2418027) | Cod sursa (job #1021253) | Cod sursa (job #1127184) | Cod sursa (job #536541) | Cod sursa (job #467124)
Cod sursa(job #467124)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cassert>
#define Nmax 100005
#define InFile "andrei.in"
#define OutFile "andrei.out"
using namespace std;
int n, m;
int G[Nmax];
struct Muchie {int fn, sn, cm;} T[2*Nmax];
void read();
void solve();
void write();
int main()
{
assert (freopen (InFile, "r", stdin));
freopen (OutFile, "w", stdout);
read();
solve();
write();
return 0;
}
void read()
{
int i;
scanf ("%d %d\n", &n, &m);
for (i=0; i<m; i++)
scanf ("%d %d %d\n", &T[i].fn, &T[i].sn, &T[i].cm);
}
void solve()
{
int i, gata, ver;
srand (time(NULL));
for (i=1; i<=n; i++)
G[i]=rand()%2;
do
{
gata=1;
for (i=0; i<m; i++)
{
//la premier condition
if (T[i].cm==0 && G[T[i].fn]==G[T[i].sn] && G[T[i].fn]==0)
{
ver=rand()%2;
if (ver==0) G[T[i].fn]=(G[T[i].fn]+1)%2;
else G[T[i].sn]=(G[T[i].sn]+1)%2;
gata=0;break;
}
//la <a doua>(in franceza) condition
if (T[i].cm==1 && G[T[i].fn]==G[T[i].sn] && G[T[i].fn]==1)
{
ver=rand()%2;
if (ver==0) G[T[i].fn]=(G[T[i].fn]+1)%2;
else G[T[i].sn]=(G[T[i].sn]+1)%2;
gata=0;break;
}
//la <a treia>(in franceza) condition
if (T[i].cm==2 && G[T[i].fn]!=G[T[i].sn])
{
ver=rand()%2;
if (ver==0) G[T[i].fn]=(G[T[i].fn]+1)%2;
else G[T[i].sn]=(G[T[i].sn]+1)%2;
gata=0;break;
}
}
}
while (!gata);
}
void write()
{
int i;
for (i=1; i<=n; i++)
printf ("%d ", G[i]);
printf ("\n");
}