Facebook
From rafio, 3 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 76
  1. package com.company;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. class Graph {
  7.     // liczba krawedzi
  8.     private int e;
  9.     // liczba wierzcholkow
  10.     private int v;
  11.     // tablica list sasiedztwa danego wierzcholka
  12.     private List<Integer>[] adjacencyList;
  13.  
  14.     /**
  15.      * @param v ilosc wierzcholkow w grafie
  16.      */
  17.     @SuppressWarnings("unchecked")
  18.     public Graph(int v) {
  19.         this.v = v;
  20.         this.e = 0;
  21.         adjacencyList = (List<Integer>[]) new List[v];
  22.         for (int i = 0; i < v; i++) {
  23.             adjacencyList[i] = new ArrayList<Integer>();
  24.         }
  25.     }
  26.  
  27.     /**
  28.      * Dodaje krawedz v-w do grafu skierowanego.
  29.      *
  30.      * @param v wierzcholek poczatkowy
  31.      * @param w wierzcholek koncowy
  32.      */
  33.     public void addEdge(int v, int w) {
  34.         adjacencyList[v].add(w);
  35.         e++;
  36.     }
  37.  
  38.     /**
  39.      * @return liczbe krawedzi
  40.      */
  41.     public int getNumberOfEdges() {
  42.         return e;
  43.     }
  44.  
  45.     /**
  46.      * @return liczbe wierzcholkow
  47.      */
  48.     public int getNumberOfVertices() {
  49.         return v;
  50.     }
  51.  
  52.     /**
  53.      * Zwraca liste sasiedztwa danego wierzcholka.
  54.      *
  55.      * @param v indeks wierzcholka skierowanego
  56.      * @return zwraca iterowalna kolekcje wierzcholkow sasiadujacych
  57.      */
  58.     public List<Integer> getAdjacencyList(int v) {
  59.         return adjacencyList[v];
  60.     }
  61.  
  62.     public String toString() {
  63.         StringBuilder s = new StringBuilder();
  64.         String newLine = System.getProperty("line.separator");
  65.         s.append("wierzcholki: ").append(v).append("; krawedzie: ").append(e)
  66.                 .append(newLine);
  67.         for (int i = 0; i < v; i++) {
  68.             s.append(i).append(": ");
  69.             for (int w : adjacencyList[i]) {
  70.                 s.append(w).append(" ");
  71.             }
  72.             s.append(newLine);
  73.         }
  74.         return s.toString();
  75.     }
  76. }