My bad, you should reset the currentSmallest for every loop…
float currentSmallest; // CHANGE HERE
float d;
for(int a = carn1m.size()-1; a >= 0; a--){
Carnivor1M c1m = carn1m.get(a);
currentSmallest = (parent.height * parent.height) + (parent.width * parent.width); // CHANGE HERE
for(int b = lac.size()-1; b >= 0; b--){
Lac l = lac.get(b);
d = ((c1m.position.x - l.position.x) * (c1m.position.x - l.position.x)) + ((c1m.position.y - l.position.y) * (c1m.position.y - l.position.y));
if(d < currentSmallest){
currentSmallest = d;
PVector target = new PVector(l.position.x, l.position.y);
}
}
c1m.arrive(target);
}