#include <stdio.h>
#include <mpi.h>

void report()
{
	int rnk;

	MPI_Comm_rank(MPI_COMM_WORLD, &rnk);
	if(rnk != 0) {
		MPI_Send(&rnk, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
		printf(" Processo %d escrevendo! \n", rnk);
		fflush(stdout);
	}

	if(rnk == 0) {
		int i;
		int sz;
	
		MPI_Comm_size(MPI_COMM_WORLD, &sz);
		i = 0;
		while(i != (sz - 1)) {
			int nrnk;
			MPI_Status  st;

			MPI_Recv(&nrnk, 1, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &st);
			i ++;
			printf(" Processo %d escrevendo -- hehehehe!!\n", st.MPI_SOURCE);
			fflush(stdout);
		}
	}
}

main(int argc, char* argv[])
{

	MPI_Init(&argc, &argv);
	report();
	MPI_Finalize();
}
