#include <stdio.h>
#include "mpi.h"

main (int argc, char **argv) {
   int i, my_rank, p, source, dest, tag=50;
   char msg[100];
   MPI_Status status;

   MPI_Init(&argc, &argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
   MPI_Comm_size(MPI_COMM_WORLD, &p);
   
   if (my_rank != 0) {
      sprintf(msg, "Greetings from process %d!", my_rank);
      dest = 0;

      MPI_Send(msg, strlen(msg)+1, 
	       MPI_CHAR, dest, tag, MPI_COMM_WORLD);
      } 
   else {
      for (i=0; i<argc; i++)
	 printf("arg %d = %s\n", i, argv[i]);
      for (source = 1; source < p; source++) {
	 MPI_Recv(msg, 100, 
		  MPI_CHAR, source, tag, MPI_COMM_WORLD, &status);
	 printf("%s\n", msg);
	 }
      }
   MPI_Finalize();
   }
