Pagini recente » Cod sursa (job #519500) | Cod sursa (job #2895922) | Cod sursa (job #1490726) | Cod sursa (job #429341) | Cod sursa (job #467326)
Cod sursa(job #467326)
#include<algorithm>
using namespace std;
#include<vector>
#include<bitset>
#include<queue>
#define mp make_pair
#define pb push_back
#define fs first
#define sc second
#define DIM 100005
vector<pair<int,int> > lst[DIM];
bool sol[DIM];
queue<int> q;
int n,m;
inline void solve (int x)
{
int i,nr;
q.push(x);
while(!q.empty ())
{
nr=q.front ();
for(i=0;i<(int)lst[nr].size ();++i)
{
if(lst[nr][i].sc==0 && sol[nr]==0 && sol[lst[nr][i].fs]==0)
{
sol[lst[nr][i].fs]=1;
q.push (lst[nr][i].fs);
}
if(lst[nr][i].sc==1 && sol[nr]==1 && sol[lst[nr][i].fs]==1)
{
sol[lst[nr][i].fs]=0;
q.push (lst[nr][i].fs);
}
if(lst[nr][i].sc==2 && ((sol[nr]==1 && sol[lst[nr][i].fs]==0) ||(sol[nr]==0 && sol[lst[nr][i].fs]==1)))
{
if(sol[nr]==1)
sol[lst[nr][i].fs]=0;
else
sol[lst[nr][i].fs]=1;
q.push (lst[nr][i].fs);
}
}
q.pop ();
}
}
int main ()
{
freopen("andrei.in","r",stdin);
freopen("andrei.out","w",stdout);
int i,nr1,nr2,nr3;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&nr1,&nr2,&nr3);
lst[nr1].pb(mp(nr2,nr3));
lst[nr2].pb(mp(nr1,nr3));
}
for(i=1;i<=n;++i)
solve(i);
for(i=1;i<=n;++i)
printf("%d ",sol[i]);
return 0;
}