/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
}
}
class TestClass {
//BufferedReader
String input
= br.
readLine(); // Reading input from STDIN String[] arr
= input.
split(" "); ArrayList<ArrayList<Integer>> adj = new ArrayList<>();
for(int i = 0 ; i<=n ; i++){
adj.add(new ArrayList<Integer>()); //as the nodes are numbered 1 ---- n
}
//unit weight undirected graph
for(int i = 0 ; i<e ; i++){
input = br.readLine();
String[] nodes
= input.
split(" "); int u
= Integer.
parseInt(nodes
[0]); int v
= Integer.
parseInt(nodes
[1]); adj.get(u).add(v);
adj.get(v).add(u);
}
input = br.readLine();
int source
= Integer.
parseInt(input
); //find shortest distance of all nodes from the dource node
int[] sArr = findShortestD(source , adj); //becuase nodes are 1 based
for(int i = 1 ; i< sArr.length ; i++){
System.
out.
print(sArr
[i
]+ " "); }
}
private static int[] findShortestD(int s , ArrayList<ArrayList<Integer>> adj){
int n = adj.size();
int[] dist = new int[n];
dist[s] = 0;
Queue<Integer> q = new LinkedList<>();
q.offer(s);
while(!q.isEmpty()){
int top = q.poll();
for(int neigh : adj.get(top)){
int distTon = dist[top] + 1;
if(distTon < dist[neigh]){
q.offer(neigh);
dist[neigh] = dist[top] + 1;
}
}
}
return dist;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCX0KfQoKY2xhc3MgVGVzdENsYXNzIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10gKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAvL0J1ZmZlcmVkUmVhZGVyCiAgICAgICAgQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICAgIFN0cmluZyBpbnB1dCA9IGJyLnJlYWRMaW5lKCk7ICAgICAgICAgICAgICAgIC8vIFJlYWRpbmcgaW5wdXQgZnJvbSBTVERJTgogICAgICAgIFN0cmluZ1tdICBhcnIgPSBpbnB1dC5zcGxpdCgiICIpOwogICAgICAgIGludCBuID0gSW50ZWdlci5wYXJzZUludChhcnJbMF0pOwogICAgICAgIGludCBlID0gSW50ZWdlci5wYXJzZUludChhcnJbMV0pOwogICAgICAgIEFycmF5TGlzdDxBcnJheUxpc3Q8SW50ZWdlcj4+IGFkaiAgPSAgbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yKGludCBpICA9IDAgOyBpPD1uIDsgaSsrKXsKICAgICAgICAgICAgYWRqLmFkZChuZXcgQXJyYXlMaXN0PEludGVnZXI+KCkpOyAgIC8vYXMgdGhlIG5vZGVzIGFyZSBudW1iZXJlZCAxIC0tLS0gbgogICAgICAgIH0KCiAgICAgICAgLy91bml0IHdlaWdodCB1bmRpcmVjdGVkIGdyYXBoCiAgICAgICAgZm9yKGludCBpICA9IDAgOyBpPGUgOyBpKyspewogICAgICAgICAgICBpbnB1dCA9IGJyLnJlYWRMaW5lKCk7CiAgICAgICAgICAgIFN0cmluZ1tdIG5vZGVzID0gaW5wdXQuc3BsaXQoIiAiKTsKICAgICAgICAgICAgaW50IHUgPSBJbnRlZ2VyLnBhcnNlSW50KG5vZGVzWzBdKTsKICAgICAgICAgICAgaW50IHYgPSBJbnRlZ2VyLnBhcnNlSW50KG5vZGVzWzFdKTsKICAgICAgICAgICAgYWRqLmdldCh1KS5hZGQodik7CiAgICAgICAgICAgIGFkai5nZXQodikuYWRkKHUpOwogICAgICAgIH0KCiAgICAgICAgaW5wdXQgPSBici5yZWFkTGluZSgpOwogICAgICAgIGludCBzb3VyY2UgPSBJbnRlZ2VyLnBhcnNlSW50KGlucHV0KTsKICAgICAgICAvL2ZpbmQgc2hvcnRlc3QgZGlzdGFuY2Ugb2YgYWxsIG5vZGVzIGZyb20gdGhlIGRvdXJjZSBub2RlCiAgICAgICAgaW50W10gc0FyciA9IGZpbmRTaG9ydGVzdEQoc291cmNlICwgYWRqKTsgLy9iZWN1YXNlIG5vZGVzIGFyZSAxIGJhc2VkCiAgICAgICAgZm9yKGludCBpID0gMSA7IGk8IHNBcnIubGVuZ3RoIDsgaSsrKXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzQXJyW2ldKyAiICIpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSBmaW5kU2hvcnRlc3REKGludCBzICwgQXJyYXlMaXN0PEFycmF5TGlzdDxJbnRlZ2VyPj4gYWRqKXsKICAgICAgICBpbnQgbiA9IGFkai5zaXplKCk7CiAgICAgICAgaW50W10gZGlzdCA9IG5ldyBpbnRbbl07CiAgICAgICAgQXJyYXlzLmZpbGwoZGlzdCAsIEludGVnZXIuTUFYX1ZBTFVFKTsKICAgICAgICBkaXN0W3NdID0gMDsKICAgICAgICBRdWV1ZTxJbnRlZ2VyPiBxID0gIG5ldyBMaW5rZWRMaXN0PD4oKTsKICAgICAgICBxLm9mZmVyKHMpOwoKICAgICAgICB3aGlsZSghcS5pc0VtcHR5KCkpewogICAgICAgICAgICBpbnQgdG9wID0gcS5wb2xsKCk7CiAgICAgICAgICAgIGZvcihpbnQgIG5laWdoIDogYWRqLmdldCh0b3ApKXsKICAgICAgICAgICAgICAgIGludCBkaXN0VG9uID0gZGlzdFt0b3BdICsgMTsKICAgICAgICAgICAgICAgIGlmKGRpc3RUb24gPCBkaXN0W25laWdoXSl7CiAgICAgICAgICAgICAgICAgICAgcS5vZmZlcihuZWlnaCk7CiAgICAgICAgICAgICAgICAgICAgZGlzdFtuZWlnaF0gPSBkaXN0W3RvcF0gKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBkaXN0OwogICAgfQoKfQo=