Advertisement
qwerty787788

Graph

Nov 12th, 2017
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.05 KB | None | 0 0
  1. class Graph {
  2.     int n;
  3.     int[][] g;
  4.  
  5.     Graph(int n, int m) {
  6.         this.n = n;
  7.         __m = m;
  8.         __fr = new int[__m];
  9.         __to = new int[__m];
  10.         __gSz = new int[n];
  11.         g = new int[n][];
  12.     }
  13.  
  14.     Graph() {
  15.         n = in.nextInt();
  16.         __m = in.nextInt();
  17.         for (int i = 0; i < __m; i++) {
  18.             int fr = in.nextInt() - 1;
  19.             int to = in.nextInt() - 1;
  20.             addEdge(fr, to);
  21.         }
  22.     }
  23.  
  24.     void build() {
  25.         for (int i = 0; i < n; i++) {
  26.             g[i] = new int[__gSz[i]];
  27.         }
  28.         for (int i = 0; i < __fr.length; i++) {
  29.             int f = __fr[i], t = __to[i];
  30.             g[f][--__gSz[f]] = t;
  31.             g[t][--__gSz[t]] = f;
  32.         }
  33.     }
  34.  
  35.     void addEdge(int fr, int to) {
  36.         __m--;
  37.         this.__fr[__m] = fr;
  38.         this.__to[__m] = to;
  39.         __gSz[fr]++;
  40.         __gSz[to]++;
  41.         if (__m == 0) {
  42.             build();
  43.         }
  44.     }
  45.    
  46.     private int __m;
  47.     private int[] __fr, __to;
  48.     private int[] __gSz;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement