/*************************  Graph_IO.java         *****************************/

import AlgoTools.IO;

/** Klasse zum Einlesen und zum Ausgeben von Graphen                         
 */

public class Graph_IO {                         // Ein- und Ausgabe von Graphen 
   
  public static Graph einlesen(){               // lies Graph ein
    Graph g;                                    // Graph g
    int n = IO.readInt("Zahl der Knoten: ");    // erfrage Zahl der Knoten
    g = new Graph(n);                           // lege Graph an
    int[]a;                                     // array fuer Adjazenzliste
    for (int i=0; i<n; i++) {                   // fuer jeden Knoten
      a = IO.readInts("Nachbarn von "+i+": ");  // erfrage die Nachbarn
      for (int j=0; j<a.length; j++)            // fuer jeden Nachbarn von i
        g.insert(i,a[j]);                       // fuege ihn bei Knoten i ein
    }                                           //
    g.reset();                                  // setze Graph zurueck
    return g;                                   // liefere Graph ab
  }

  public static void ausgeben(Graph g) {        // gib Graph aus
    for (int i=0; i<g.number(); i++){           // fuer jeden Knoten
      IO.print(i + " : ");                      // drucke seinen Namen
      while (g.moreNeighbors(i)) {              // fuer jeden Nachbarn
        IO.print(" " + g.nextNeighbor(i));      // drucke dessen Namen
      }                                         //
      IO.println();                             // Zeilenumbruch
    }                                           //
    g.reset();                                  // setze Adjazenzlisten zurueck
  }
  
}
