I can offer you my sympathy. I also have a problem with smoking neighbours. I live in a Victorian terraced house with stripped floor boards, there is a problem with a gap under the houses where a concrete hearth had previously been. At least I think that is where the problem lies. Luckily for me, the worst room affected is the bathroom and usually only in the evening after DS is asleep. The smell of the smoke comes up from the floor boards.
The builders who worked on the house next door kindly suggested using silicone sealant in the gaps in the floor boards (black is best if stripped floors) as it doesn't fall out when the wood expands and contracts unlike filling with sawdust mix or wooden tappets. Shame they didn't seal next door then! It might be worth doing this even if you have carpets down, lift them and seal the floor boards before relaying.
Do you own your flat or rent it? If rented, I would ask the landlord to sort it out, if you own it, I'm afraid it's up to you.
Unless it is forbidden in the lease, your neighbours have the right to smoke in their own home, although I guess as cannabis is an illegal drug they don't have that right but would anyone do anything about it?
It's rather madness that despite all the fuss about smoking laws, it is still possible to live in a home polluted by someone else's second hand smoke and have nothing that can be done.
I have yet to resolve my issues as my hole under the house is behind the bath so not easy to access and as it is a party wall issue, I'm not sure if I am soley responsible or if it is a joint responsibility with the landlord who owns the house nextdoor. Unfortunately I no longer have his contact details. Both our houses were extensively renovated a few years back, nextdoor was done after mine, but not sure if they removed the last bit of adjoining concrete or my builders a couple of years previously. For me, sometimes it stops for a while and I forget about but then other times it comes back for several days at a time. I guess it depends on which room they smoke in.