#include <bits/stdc++.h>
using namespace std;
bool can;
int color[100000];
vector<int>graf[100000];
void dfs(int u, int c)
{
//color[u]=c;
// c^=1;
if(color[u]>-1)
{
if(color[u]!=c)
{
can=false;
}
return;
}
color[u]=c;
//c^=1;
for(auto x: graf[u])
{
dfs(x,c^1);
}
}
int main()
{
int n,e; cin>>n>>e;
vector<pair<int,int>>edges;
can=true;
memset(color,-1,sizeof(color));
for(int i=0;i<e;i++)
{
int x,y; cin>>x>>y;
graf[x].push_back(y);
graf[y].push_back(x);
edges.push_back({x,y});
}
dfs(1,1);
if(!can){cout<<"NO";}
else {cout<<"YES\n";}
for(int i=0;i<e;i++)
{
int x=edges[i].first;
int y=edges[i].second;
if(color[x]==1)
{
cout<<1;
}
else
{
cout<<0;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgY2FuOwppbnQgY29sb3JbMTAwMDAwXTsKdmVjdG9yPGludD5ncmFmWzEwMDAwMF07CnZvaWQgZGZzKGludCB1LCBpbnQgYykKewoJLy9jb2xvclt1XT1jOwovLwljXj0xOwoKCQlpZihjb2xvclt1XT4tMSkKCQl7CgkJCWlmKGNvbG9yW3VdIT1jKQoJCQl7CgkJCQljYW49ZmFsc2U7IAoJCQl9CgkJCXJldHVybjsKCQl9CgkJY29sb3JbdV09YzsKCQkvL2NePTE7Cglmb3IoYXV0byB4OiBncmFmW3VdKQoJCgkJewoJCQlkZnMoeCxjXjEpOwoJCX0KCQoJCgkKCQp9CmludCBtYWluKCkKewoJaW50IG4sZTsgY2luPj5uPj5lOwoJdmVjdG9yPHBhaXI8aW50LGludD4+ZWRnZXM7CgljYW49dHJ1ZTsKCW1lbXNldChjb2xvciwtMSxzaXplb2YoY29sb3IpKTsKCWZvcihpbnQgaT0wO2k8ZTtpKyspCgl7CgkJaW50IHgseTsgY2luPj54Pj55OwoJCWdyYWZbeF0ucHVzaF9iYWNrKHkpOwoJCWdyYWZbeV0ucHVzaF9iYWNrKHgpOwoJCWVkZ2VzLnB1c2hfYmFjayh7eCx5fSk7Cgl9CglkZnMoMSwxKTsKCWlmKCFjYW4pe2NvdXQ8PCJOTyI7fQoJZWxzZSB7Y291dDw8IllFU1xuIjt9Cglmb3IoaW50IGk9MDtpPGU7aSsrKQoJewoJCWludCB4PWVkZ2VzW2ldLmZpcnN0OwoJCWludCB5PWVkZ2VzW2ldLnNlY29uZDsKCQlpZihjb2xvclt4XT09MSkKCQl7CgkJCWNvdXQ8PDE7CgkJfQoJCWVsc2UKCQl7CgkJCWNvdXQ8PDA7CgkJfQoJfQoKCgoKCgkKfQ==