MPI_Send
> MPI_Send(u[0][0],1,matrix, 1,0, MPI_COMM_WORD);
You're passing the top-left element BY VALUE.

Do you even get a warning?
I get - error: incompatible type for argument 1 of ‘MPI_Send’...