while(!q.empty())
{
int x = q.front();
q.pop();
for(int y: graph[x])
{
if(used[y] == false)
{
q.push(y);
used[y] = true;
w[y] = w[x] + 1;
}
}
}
d2hpbGUoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBpbnQgeCA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvcihpbnQgeTogZ3JhcGhbeF0pCiAgICAgICAgewogICAgICAgICAgICBpZih1c2VkW3ldID09IGZhbHNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBxLnB1c2goeSk7CiAgICAgICAgICAgICAgICB1c2VkW3ldID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHdbeV0gPSB3W3hdICsgMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0=