
public class h6_6a_gdi {

	//Die Adiazenzmatrix für ein Ungerichteten Graphen mit booleans dargestellt
	public static final boolean[][] Adiazenz =
		{{false,	false,	true,	true,	false	},
		 {false,	false,	true,	false,	true	},
		 {true,		true,	false,	true,	false	},
		 {true,		false,	true,	true,	false	},
		 {false,	true,	false,	false,	false	}};
	
	public boolean[][] calculate()
	{
		//Zähler für die Kanten
		int connections = 0;
		
		//Durchsuche obere Dreiecksmatrix der AidazenzMatrix
		for(int i=0; i<Adiazenz.length; i++)
		{
			for(int j=i; j<Adiazenz.length; j++)
			{
				//Falls Kante zähle Katenzähler hoch
				if(Adiazenz[i][j])
				{
					connections++;
				}
			}
		}
		
		//Inzidenz-Matrix |V|*|E|
		boolean[][] result = new boolean[Adiazenz.length][connections];
		
		//Spalten Zähler (aktuelle Kanten)
		int curcon = 0;
		
		//Durchsuche obere Dreiecksmatrix der AidazenzMatrix
		for(int i=0; i<Adiazenz.length; i++)
		{
			for(int j=i; j<Adiazenz.length; j++)
			{
				//Falls Kante in AdianzenzMatrix
				if(Adiazenz[i][j])
				{
					//Setzte für Knoten der x-Achse(j) und der
					//y-Achse(i) der Adiazenzmatrix den Wert der
					//aktuellen Kante in der Inzidenzmatrix auf true.
					result[i][curcon] = true;
					result[j][curcon] = true;
					curcon ++; //nächste Kante
				}
			}
		}
		
		//Ergebnis zurückgeben
		return result;
		
	}
	
	//Die InzidenzMatrix ausgeben
	public void calcandprint()
	{
		boolean[][] result = calculate();
	
		String output = new String();
		
		for(int i=0; i< result.length; i++)
		{
			for(int j=0; j< result[i].length;j++)
			{
				output += result[i][j] + "\t";
			}
			
			output += "\n";
		}
		
		System.out.println(output);
	}
	
	//Main...
	public static void main(String[] args) {
		new h6_6a_gdi().calcandprint();

	}

}
