#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> II;
typedef vector< II > VII;
typedef vector<int> VI;
typedef vector< VI > VVI;
typedef long long int LL;
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define SZ(a) (int)(a.size())
#define ALL(a) a.begin(),a.end()
#define SET(a,b) memset(a,b,sizeof(a))
#define si(n) scanf("%d",&n)
#define dout(n) printf("%d\n",n)
#define sll(n) scanf("%lld",&n)
#define lldout(n) printf("%lld\n",n)
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
//FILE *fin = freopen("in","r",stdin);
//FILE *fout = freopen("out","w",stdout);
const int N = int(1e5)+1;
const int M = int(2e5)+1;
VI g[N],rg[N],comp,order;
int vis[N],ans[N];
void dfs1(int u)
{
vis[u]=1;
for(int i=0;i<SZ(g[u]);i++)
if(!vis[g[u][i]])
dfs1(g[u][i]);
order.PB(u);
}
void dfs2(int u)
{
vis[u]=1;comp.PB(u);
for(int i=0;i<SZ(rg[u]);i++)
if(!vis[rg[u][i]])
dfs2(rg[u][i]);
}
int main()
{
int n,m;
si(n);si(m);
for(int i=0;i<m;i++)
{
int u,v;
si(u);si(v);
g[u].PB(v);
rg[v].PB(u);
}
for(int i=1;i<=n;i++)
if(!vis[i])
dfs1(i);
SET(vis,0);
for(int i=1;i<=n;i++)
{
int v = order[n-i];
if(!vis[v])
{
dfs2(v);
if(SZ(comp)>1)
for(auto &it:comp)
ans[it]=1;
comp.clear();
}
}
for(int i=1;i<=n;i++)printf("%d ",ans[i]);
printf("\n");
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBwYWlyPGludCxpbnQ+ICAgSUk7CnR5cGVkZWYgdmVjdG9yPCBJSSA+ICAgICAgVklJOwp0eXBlZGVmIHZlY3RvcjxpbnQ+ICAgICBWSTsKdHlwZWRlZiB2ZWN0b3I8IFZJID4gCVZWSTsKdHlwZWRlZiBsb25nIGxvbmcgaW50IAlMTDsKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBTWihhKSAoaW50KShhLnNpemUoKSkKI2RlZmluZSBBTEwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBTRVQoYSxiKSBtZW1zZXQoYSxiLHNpemVvZihhKSkKI2RlZmluZSBzaShuKSBzY2FuZigiJWQiLCZuKQojZGVmaW5lIGRvdXQobikgcHJpbnRmKCIlZFxuIixuKQojZGVmaW5lIHNsbChuKSBzY2FuZigiJWxsZCIsJm4pCiNkZWZpbmUgbGxkb3V0KG4pIHByaW50ZigiJWxsZFxuIixuKQojZGVmaW5lIGZhc3RfaW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7Y2luLnRpZShOVUxMKQojZGVmaW5lIFRSQUNFCiNpZmRlZiBUUkFDRQojZGVmaW5lIHRyYWNlKC4uLikgX19mKCNfX1ZBX0FSR1NfXywgX19WQV9BUkdTX18pCnRlbXBsYXRlIDx0eXBlbmFtZSBBcmcxPgp2b2lkIF9fZihjb25zdCBjaGFyKiBuYW1lLCBBcmcxJiYgYXJnMSl7CgljZXJyIDw8IG5hbWUgPDwgIiA6ICIgPDwgYXJnMSA8PCBzdGQ6OmVuZGw7Cn0KdGVtcGxhdGUgPHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lLi4uIEFyZ3M+CnZvaWQgX19mKGNvbnN0IGNoYXIqIG5hbWVzLCBBcmcxJiYgYXJnMSwgQXJncyYmLi4uIGFyZ3MpewoJY29uc3QgY2hhciogY29tbWEgPSBzdHJjaHIobmFtZXMgKyAxLCAnLCcpO2NlcnIud3JpdGUobmFtZXMsIGNvbW1hIC0gbmFtZXMpIDw8ICIgOiAiIDw8IGFyZzE8PCIgfCAiO19fZihjb21tYSsxLCBhcmdzLi4uKTsKfQojZWxzZQojZGVmaW5lIHRyYWNlKC4uLikKI2VuZGlmCi8vRklMRSAqZmluID0gZnJlb3BlbigiaW4iLCJyIixzdGRpbik7Ci8vRklMRSAqZm91dCA9IGZyZW9wZW4oIm91dCIsInciLHN0ZG91dCk7CmNvbnN0IGludCBOID0gaW50KDFlNSkrMTsKY29uc3QgaW50IE0gPSBpbnQoMmU1KSsxOwpWSSBnW05dLHJnW05dLGNvbXAsb3JkZXI7CmludCB2aXNbTl0sYW5zW05dOwp2b2lkIGRmczEoaW50IHUpCnsKICAgIHZpc1t1XT0xOwogICAgZm9yKGludCBpPTA7aTxTWihnW3VdKTtpKyspCiAgICAgICAgaWYoIXZpc1tnW3VdW2ldXSkKICAgICAgICAgICAgZGZzMShnW3VdW2ldKTsKICAgIG9yZGVyLlBCKHUpOwp9CnZvaWQgZGZzMihpbnQgdSkKewogICAgdmlzW3VdPTE7Y29tcC5QQih1KTsKICAgIGZvcihpbnQgaT0wO2k8U1oocmdbdV0pO2krKykKICAgICAgICBpZighdmlzW3JnW3VdW2ldXSkKICAgICAgICAgICAgZGZzMihyZ1t1XVtpXSk7Cn0KaW50IG1haW4oKQp7CiAgICBpbnQgbixtOwogICAgc2kobik7c2kobSk7CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKQogICAgewogICAgICAgIGludCB1LHY7CiAgICAgICAgc2kodSk7c2kodik7CiAgICAgICAgZ1t1XS5QQih2KTsKICAgICAgICByZ1t2XS5QQih1KTsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgICAgIGlmKCF2aXNbaV0pCiAgICAgICAgICAgIGRmczEoaSk7CiAgICBTRVQodmlzLDApOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgaW50IHYgPSBvcmRlcltuLWldOwogICAgICAgIGlmKCF2aXNbdl0pCiAgICAgICAgewogICAgICAgICAgICBkZnMyKHYpOwogICAgICAgICAgICBpZihTWihjb21wKT4xKQogICAgICAgICAgICAgICAgZm9yKGF1dG8gJml0OmNvbXApCiAgICAgICAgICAgICAgICAgICAgYW5zW2l0XT0xOwogICAgICAgICAgICBjb21wLmNsZWFyKCk7CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBpPTE7aTw9bjtpKyspcHJpbnRmKCIlZCAiLGFuc1tpXSk7CiAgICBwcmludGYoIlxuIik7CglyZXR1cm4gMDsKfSAgIA==