Pagini recente » Cod sursa (job #3316673) | Cod sursa (job #3356385) | Cod sursa (job #3351748) | Cod sursa (job #3339792) | Cod sursa (job #3348558)
#include <bits/stdc++.h>
using namespace std;
vector <int> v[200555];
vector <int> vv[200555];
vector <int> st;
int f[200555];
int ctc[200555],ct;
void bl(int k)
{
f[k]=1;
for(auto a:v[k])
{
if(f[a]==0)
{
bl(a);
}
}
st.push_back(k);
}
void dfs(int k)
{
ctc[k]=ct;
f[k]=0;
for(auto a:vv[k])
{
if(f[a]==1)
{
dfs(a);
}
}
}
int main()
{
ifstream cin("andrei.in");
ofstream cout("andrei.out");
int n,m,x,y,c;
cin>>n>>m;
for(int i=1;i<=m;++i)
{
cin>>x>>y>>c;
if(c==0)
{
v[x].push_back(y+n);
vv[y+n].push_back(x);
v[y].push_back(x+n);
vv[x+n].push_back(y);
}
else if(c==1)
{
v[x+n].push_back(y);
vv[y].push_back(x+n);
v[y+n].push_back(x);
vv[x].push_back(y+n);
}
else
{
v[x].push_back(y);
vv[y].push_back(x);
v[x+n].push_back(y+n);
vv[y+n].push_back(x+n);
v[y].push_back(x);
vv[x].push_back(y);
v[y+n].push_back(x+n);
vv[x+n].push_back(y+n);
}
}
for(int i=1;i<=2*n;++i)
{
if(f[i]==0)
{
bl(i);
}
}
for(int h=st.size()-1;h>=0;--h)
{
if(f[st[h]]==1)
{
++ct;
dfs(st[h]);
}
}
for(int i=1;i<=n;++i)
{
if(ctc[i]>ctc[i+n])
{
cout<<1<<" ";
}
else
{
cout<<0<<" ";
}
}
return 0;
}