Data structure

  string name[30];  // The name list on line 1
  map a;            // Assignment


Initialization: for ( int i = 0; i < N; i++ ) { cin >> n; name[i] = n; a[n] = ""; } Example: name[ ] = "Ada" "Alan" "Grace" "John" a["Ada"] = "", a["Alan"] = "", a["Grace"] = "", a["John"] = ""

J5 solution in C++

 Example:

  name[ ] = "Ada"   "Alan"   "Grace"   "John"

  a["Ada"] = "", a["Alan"] = "", a["Grace"] = "", a["John"] = ""


// Read and process line 2 for ( int i = 0; i < N; i++ ) { src = name[i]; // This was the name opposite to the input cin >> dest; // Has src been assigned/mapped ? if ( a[src] == "" ) a[src] = dest; // No, now src is mapped // Check for self-mapped violations if ( src == dest ) { cout << "bad" << endl; exit(0); } // Check for a <--> b violations if ( a[dest] != "" ) // dest is already assigned { if ( a[dest] != src ) // Then dest MUST be assigned to src { cout << "bad" << endl; exit(0); } } }