Pagini recente » Cod sursa (job #324553) | Cod sursa (job #740122) | Cod sursa (job #2116047) | Cod sursa (job #2837000) | Cod sursa (job #467333)
Cod sursa(job #467333)
#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;
char buff[100];
int poz;
inline void pars (int &nr)
{
nr=0;
while(buff[poz]<'0' || buff[poz]>'9')
if(++poz==100)
fread(buff,1,100,stdin),poz=0;
while(buff[poz]>='0' && buff[poz]<='9')
{
nr=nr*10+buff[poz]-'0';
if(++poz==100)
fread(buff,1,100,stdin),poz=0;
}
}
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;
pars(n);
pars(m);
for(i=1;i<=m;++i)
{
pars(nr1);
pars(nr2);
pars(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;
}