Pagini recente » Cod sursa (job #1494733) | Cod sursa (job #473196) | Cod sursa (job #2085417) | Cod sursa (job #1940035) | Cod sursa (job #471857)
Cod sursa(job #471857)
#include <stdio.h>
#include <vector>
#define Nmax 100002
#define Mmax 200002
#define x first
#define c second
#define pb push_back
#define mp make_pair
using namespace std;
vector< pair<int,int> > v[Nmax];
vector< int > v2;
int cul[Nmax],use[Nmax];
int n,m;
int color(int cine, int c){
vector< pair<int,int> >:: iterator it;
if( use[cine] )
if( cul[cine]==c ) return 1;
else return 0;
use[cine]=1;
cul[cine]=c;
for(it=v[cine].begin(); it!=v[cine].end(); ++it)
if( it->c == 2 && !color(it->x,c) )
return 0; else
if( it->c == c && !color(it->x,c^1) )
return 0;
return 1;
}
int main(){
int i,x,y,c;
vector< int >:: iterator it;
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].pb(mp(y,c));
v[y].pb(mp(x,c));
}
for(i=1;i<=n;++i)
if( ! use[i] ){
v2.clear();
if( ! color(i,0) ){
for(it=v2.begin(); it!=v2.end(); ++it)
use[*it]=0;
color(i,1);
}
}
for(i=1;i<=n;++i) printf("%d ",cul[i]);
fclose(stdin); fclose(stdout);
return 0;
}