package com.company; import java.util.ArrayList; import java.util.List; class Graph { // liczba krawedzi private int e; // liczba wierzcholkow private int v; // tablica list sasiedztwa danego wierzcholka private List[] adjacencyList; /** * @param v ilosc wierzcholkow w grafie */ @SuppressWarnings("unchecked") public Graph(int v) { this.v = v; this.e = 0; adjacencyList = (List[]) new List[v]; for (int i = 0; i < v; i++) { adjacencyList[i] = new ArrayList(); } } /** * Dodaje krawedz v-w do grafu skierowanego. * * @param v wierzcholek poczatkowy * @param w wierzcholek koncowy */ public void addEdge(int v, int w) { adjacencyList[v].add(w); e++; } /** * @return liczbe krawedzi */ public int getNumberOfEdges() { return e; } /** * @return liczbe wierzcholkow */ public int getNumberOfVertices() { return v; } /** * Zwraca liste sasiedztwa danego wierzcholka. * * @param v indeks wierzcholka skierowanego * @return zwraca iterowalna kolekcje wierzcholkow sasiadujacych */ public List getAdjacencyList(int v) { return adjacencyList[v]; } public String toString() { StringBuilder s = new StringBuilder(); String newLine = System.getProperty("line.separator"); s.append("wierzcholki: ").append(v).append("; krawedzie: ").append(e) .append(newLine); for (int i = 0; i < v; i++) { s.append(i).append(": "); for (int w : adjacencyList[i]) { s.append(w).append(" "); } s.append(newLine); } return s.toString(); } }