/* 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
{
{
Map
<String, String
> dataset
= new HashMap
<String,String
>(){{ put("def","abc");
put("ghi", "def");
put("jkl","ghi");
put("mno","ghi");
put("stu","pqr");
}};
// your code goes here
factor_transitivity(dataset, false);
}
private static void factor_transitivity
(Map
<String,String
> dataset,
boolean complete
) { if (!complete) {
complete = true; // Assume that on this check everything will come out to be OK.
for (Map.
Entry<String, String
> pair
: dataset.
entrySet()) { if (dataset.containsKey(pair.getValue())) {
complete = false;
String value
= dataset.
get(pair.
getValue()); dataset.put(pair.getKey(),value);
System.
out.
print("Found transitive key "+pair.
getKey()); break;
}
}
factor_transitivity(dataset, complete);
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCU1hcDxTdHJpbmcsIFN0cmluZz4gZGF0YXNldCA9IG5ldyBIYXNoTWFwPFN0cmluZyxTdHJpbmc+KCl7ewoJCQlwdXQoImRlZiIsImFiYyIpOwoJCQlwdXQoImdoaSIsICJkZWYiKTsKCQkJcHV0KCJqa2wiLCJnaGkiKTsKCQkJcHV0KCJtbm8iLCJnaGkiKTsKCQkJcHV0KCJzdHUiLCJwcXIiKTsKCQl9fTsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJZmFjdG9yX3RyYW5zaXRpdml0eShkYXRhc2V0LCBmYWxzZSk7CgkJU3lzdGVtLm91dC5wcmludGxuKGRhdGFzZXQpOwoJfQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCBmYWN0b3JfdHJhbnNpdGl2aXR5KE1hcDxTdHJpbmcsU3RyaW5nPiBkYXRhc2V0LCBib29sZWFuIGNvbXBsZXRlKSB7CiAgICBpZiAoIWNvbXBsZXRlKSB7CiAgICAgICAgY29tcGxldGUgPSB0cnVlOyAvLyBBc3N1bWUgdGhhdCBvbiB0aGlzIGNoZWNrIGV2ZXJ5dGhpbmcgd2lsbCBjb21lIG91dCB0byBiZSBPSy4KICAgICAgICBmb3IgKE1hcC5FbnRyeTxTdHJpbmcsIFN0cmluZz4gcGFpciA6IGRhdGFzZXQuZW50cnlTZXQoKSkgewogICAgICAgICAgICBpZiAoZGF0YXNldC5jb250YWluc0tleShwYWlyLmdldFZhbHVlKCkpKSB7CiAgICAgICAgICAgICAgICBjb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gZGF0YXNldC5nZXQocGFpci5nZXRWYWx1ZSgpKTsKICAgICAgICAgICAgICAgIGRhdGFzZXQucHV0KHBhaXIuZ2V0S2V5KCksdmFsdWUpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRm91bmQgdHJhbnNpdGl2ZSBrZXkgIitwYWlyLmdldEtleSgpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZhY3Rvcl90cmFuc2l0aXZpdHkoZGF0YXNldCwgY29tcGxldGUpOwogICAgfQp9Cn0=