Pagini recente » Cod sursa (job #1029163) | Cod sursa (job #2426761) | Cod sursa (job #432706) | Cod sursa (job #2341720) | Cod sursa (job #1300401)
#include<cstdio>
#include<vector>
#define NMAX 100005
using namespace std;
int n,m,i,x,y,c;
int viz[NMAX],sol[NMAX];
struct muchie
{
int l,r;
};
vector<muchie>v[NMAX];
vector<int>mul;
muchie pp(int x,int y)
{
muchie X;
X.l=x;X.r=y;
return X;
}
bool DFS(int nod,int nr)
{
if (viz[nod]==1)
if (sol[nod]!=nr) return 0;
else return 1;
viz[nod]=1;
sol[nod]=nr;
mul.push_back(nod);
vector<muchie>::iterator it;
for (it=v[nod].begin();it!=v[nod].end();++it)
{
muchie X=*it;
if (X.r==0 && sol[nod]==0)
if (DFS(X.l,1)==0) return 0;
if (X.r==1 && sol[nod]==1)
if (DFS(X.l,0)==0) return 0;
if (X.r==2)
if (DFS(X.l,nr)==0) return 0;
}
return 1;
}
int main()
{
freopen("andrei.in","r",stdin);
freopen("andrei.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&c);
v[x].push_back(pp(y,c));
v[y].push_back(pp(x,c));
}
for (i=1;i<=n;++i)
{
if (viz[i]==0)
{
if (DFS(i,0)==0)
{
vector<int>::iterator it;
for (it=mul.begin();it!=mul.end();++it) viz[*it]=0;
DFS(i,1);
}
}
}
for (i=1;i<=n;++i) printf("%d ",sol[i]);
return 0;
}