Pagini recente » Cod sursa (job #1960055) | Cod sursa (job #1839579) | Cod sursa (job #868478) | Cod sursa (job #2957944) | Cod sursa (job #1869334)
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream fin("andrei.in");
ofstream fout("andrei.out");
struct muchie { int y, c; };
int n, m, i, j, k, x, y, c;
int care[100005];
bitset <100005> viz;
vector <muchie> ls[100005];
vector <int> unde;
bool df(int x, int culoare) {
unde.push_back(x);
if(viz[x]) return care[x]==culoare;
viz[x]=1;
care[x]=culoare;
int i, l=ls[x].size(), y, c;
for(i=0; i<l; i++) {
y=ls[x][i].y;
c=ls[x][i].c;
if(c==2 && !df(y, culoare)) return 0;
else if(c==culoare && !df(y, culoare^1)) return 0;
}
return 1;
}
int main() {
fin>>n>>m;
for(int i=1; i<=m; i++){
fin>>x>>y>>c;
ls[x].push_back({y, c});
ls[y].push_back({x, c});
}
for(int i=1; i<=n; i++)
if(!viz[i]){ unde.clear();
if(!df(i, 0)){
int l=unde.size();
for(int j=0; j<l; j++) viz[unde[j]] = 0;
df(i, 1);
}
}
for(int i=1; i<=n; i++) fout<<care[i]<<" ";
return 0;
}