Way back when I had this same problem in Unity, I solved it by creating a temporary array that would hold a reference to every actor that I was dealing damage to. On the OnBeginOverlap event, I just checked to see if the actor was in the list. If they were not in the list I would, I would deal damage and then add them to the list. This allowed me to do melee damage to multiple entities at a time for a single weapon swing while actually using the blade of the weapon to deal the damage. I’m at work right now, so I can’t make you a blueprint image to show exactly what I mean, so hopefully I described it well enough.
EDIT: I took another look at your image, and it looks like you are generally going in the right direction. The issue, however, is that you are creating a new blank array every time you have the OnBeginOverlap even run. You want to create this array withing your actor instead and just clear the array when you begin a new attack. The way you have it now would cause the list to be empty each time something overlaps, which can be multiple times per attack.
EDIT 2: Actually, that previous edit is what I am assuming that you are doing based on the code that you provided. I do not actually know how you are handling the array that is passed into ActorOverlapMelee, but either way making it an array to pass into the melee event is redundant because the OnBeginOverlap event will always only return one actor as this event runs once per each object that overlaps.