Pagini recente » Cod sursa (job #1689309) | Cod sursa (job #733308) | Cod sursa (job #2831722) | Cod sursa (job #2795902) | Cod sursa (job #467227)
Cod sursa(job #467227)
#include<cstdio>
#include<list>
using namespace std;
long n,a,b,c,v[100005],q,m;
list<long> L[100005],C[100005],x,y;
list<long>::iterator it,it1,it2,itc;
int main()
{freopen("andrei.in","r",stdin);
scanf("%ld%ld",&n,&m);
long i;
for(i=1;i<=m;++i)
{scanf("%ld%ld%ld",&a,&b,&c);
if(c==2)
{++q;
x.push_back(a);
y.push_back(b);
}
else
{
L[a].push_back(b);
L[b].push_back(a);
C[a].push_back(c);
C[b].push_back(c);
}
}
fclose(stdin);
freopen("andrei.out","w",stdout);
long ok=1;
for(i=0;i<=100001;++i)
v[i]=-1;
for(it1=x.begin(),it2=y.begin();it1!=x.end();++it1,++it2)
{v[*it1]=0;v[*it2]=0;
for(it=L[*it1].begin(),itc=C[*it1].begin();it!=L[*it1].end();++it,++itc)
{if(v[*it]==-1)
if(*itc==0)
v[*it]=1;
else
v[*it]=0;
else
if(v[*it]!=*itc)
{ok=0;
break;
}
}
for(it=L[*it2].begin(),itc=C[*it2].begin();it!=L[*it2].end();++it,++itc)
{if(v[*it]==-1)
if(*itc==0)
v[*it]=1;
else
v[*it]=0;
else
if(v[*it]!=*itc)
{ok=0;
break;
}
}
if(ok==0)
break;
}
if(ok==0)
{ok=2;
for(i=0;i<=100001;++i)
v[i]=-1;
for(it1=x.begin(),it2=y.begin();it1!=x.end();++it1,++it2)
{v[*it1]=1;v[*it2]=1;
for(it=L[*it1].begin(),itc=C[*it1].begin();it!=L[*it1].end();++it,++itc)
{if(v[*it]==-1)
if(*itc==1)
v[*it]=0;
else
v[*it]=1;
else
if(v[*it]!=*itc)
{ok=-1;
break;
}
}
for(it=L[*it2].begin(),itc=C[*it2].begin();it!=L[*it2].end();++it,++itc)
{if(v[*it]==-1)
if(*itc==0)
v[*it]=1;
else
v[*it]=0;
else
if(v[*it]!=*itc)
{ok=-1;
break;
}
}
if(ok==-1)
break;
}
}
for(it=L[i].begin(),itc=C[i].begin();it!=L[i].end();++it,++itc)
if(v[*it]==-1)
if(v[i]==0)
v[*it]=1;
else
v[*it]=0;
for(i=1;i<=n;++i)
printf("%ld ",v[i]);
fclose(stdout);
return 0;
}