/* 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 Codechef
{
{
// your code goes here
Scanner scanner
= new Scanner
( System .
in ) ;
int n = scanner.nextInt ( ) ;
int m = scanner.nextInt ( ) ;
for ( int i = 0 ; i <= n; i++ ) {
adj[ i] = new ArrayList<> ( ) ;
}
int [ ] val = new int [ n + 1 ] ;
for ( int i = 1 ; i <= n; i++ ) {
val[ i] = scanner.nextInt ( ) ;
}
for ( int i = 0 ; i < m; i++ ) {
int u = scanner.nextInt ( ) ;
int v = scanner.nextInt ( ) ;
adj[ u] .add ( v) ;
adj[ v] .add ( u) ;
}
scanner.close ( ) ;
solve( n,adj,val) ;
}
public static void solve( int n, List< Integer> [ ] adj, int [ ] val) {
int [ ] used = new int [ n+ 1 ] ;
int [ ] max5 = new int [ n+ 1 ] ;
int [ ] lvl= new int [ n+ 1 ] ;
int [ ] countP= new int [ n+ 1 ] ;
Queue< Integer> queue = new LinkedList<> ( ) ;
if ( val[ 1 ] == 5 ) {
max5[ 1 ] = 1 ;
}
queue.add ( 1 ) ;
used[ 1 ] = 1 ;
lvl[ 1 ] = 0 ;
countP[ 1 ] = 1 ;
while ( ! queue.isEmpty ( ) ) {
int u = queue.poll ( ) ;
for ( int v : adj[ u] ) {
int vFives= 0 ;
if ( val[ v] == 5 ) {
vFives= 1 ;
}
if ( used[ v] == 0 ) {
lvl[ v] = lvl[ u] + 1 ;
used[ v] = 1 ;
countP[ v] = countP[ u] ;
max5[ v] = max5[ u] + vFives;
queue.add ( v) ;
countP[ v] = countP[ u] ;
}
else {
if ( lvl[ v] == lvl[ u] + 1 ) {
int fre5= max5[ u] + vFives;
max5
[ v
] = Math .
max ( max5
[ v
] ,fre5
) ; countP[ v] += countP[ u] ;
}
}
}
}
for ( int i = 1 ; i <= n; i++ ) {
System .
out .
println ( "Node " + i
+ " : " + " maxFives=" + max5
[ i
] + " with distance of " + lvl
[ i
] + " with count of :" + countP
[ i
] ) ; }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgQ29kZWNoZWYKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgogICAgICAgIGludCBuID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgaW50IG0gPSBzY2FubmVyLm5leHRJbnQoKTsKCiAgICAgICAgTGlzdDxJbnRlZ2VyPltdIGFkaiA9IG5ldyBBcnJheUxpc3RbbiArIDFdOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBhZGpbaV0gPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaW50W10gdmFsID0gbmV3IGludFtuICsgMV07CgogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICB2YWxbaV0gPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICAgICAgaW50IHUgPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICAgICAgaW50IHYgPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICAgICAgYWRqW3VdLmFkZCh2KTsKICAgICAgICAgICAgYWRqW3ZdLmFkZCh1KTsKICAgICAgICB9CiAgICAgICAgc2Nhbm5lci5jbG9zZSgpOwogICAgICAgIAogICAgICAgIHNvbHZlKG4sYWRqLHZhbCk7CiAgICAgICAgCiAgICAgICAgCgl9CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgc29sdmUoaW50IG4sIExpc3Q8SW50ZWdlcj5bXSBhZGosIGludFtdIHZhbCkgewogICAgICAgIGludFtdIHVzZWQgPSBuZXcgaW50W24rMV07CgogICAgICAgIGludFtdIG1heDUgPSBuZXcgaW50W24rMV07CiAgICAgICAgaW50W10gbHZsPW5ldyBpbnRbbisxXTsKICAgICAgICBpbnRbXSBjb3VudFA9bmV3IGludFtuKzFdOwoKICAgICAgICBRdWV1ZTxJbnRlZ2VyPiBxdWV1ZSA9IG5ldyBMaW5rZWRMaXN0PD4oKTsKICAgICAgICAKICAgICAgICBpZih2YWxbMV09PTUpewogICAgICAgICAgICBtYXg1WzFdPTE7CiAgICAgICAgfQogICAgICAgIHF1ZXVlLmFkZCgxKTsKICAgICAgICB1c2VkWzFdPTE7CiAgICAgICAgbHZsWzFdPTA7CiAgICAgICAgY291bnRQWzFdPTE7CgogICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIGludCB1ID0gcXVldWUucG9sbCgpOwoKICAgICAgICAgICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICAgICAgICAgICAgaW50IHZGaXZlcz0wOwogICAgICAgICAgICAgICAgaWYodmFsW3ZdPT01KXsKICAgICAgICAgICAgICAgICAgICB2Rml2ZXM9MTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh1c2VkW3ZdID09IDApIHsKICAgICAgICAgICAgICAgICAgICBsdmxbdl09bHZsW3VdKzE7CiAgICAgICAgICAgICAgICAgICAgdXNlZFt2XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgY291bnRQW3ZdID0gY291bnRQW3VdOwogICAgICAgICAgICAgICAgICAgIG1heDVbdl0gPSBtYXg1W3VdICsgdkZpdmVzOwogICAgICAgICAgICAgICAgICAgIHF1ZXVlLmFkZCh2KTsKICAgICAgICAgICAgICAgICAgICBjb3VudFBbdl0gPSBjb3VudFBbdV07CiAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICBpZihsdmxbdl09PWx2bFt1XSsxKXsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyZTU9bWF4NVt1XSt2Rml2ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heDVbdl09TWF0aC5tYXgobWF4NVt2XSxmcmU1KTsKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRQW3ZdICs9IGNvdW50UFt1XTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vZGUgIiArIGkgKyAiIDogIiArICIgbWF4Rml2ZXM9IiArIG1heDVbaV0gKyIgd2l0aCBkaXN0YW5jZSBvZiAiK2x2bFtpXSArIiB3aXRoIGNvdW50IG9mIDoiK2NvdW50UFtpXSk7CiAgICAgICAgfQogICAgfQp9