Identifying diffusion sources in large networks: A community structure based approach