Mitrezzz

[АПС] Лаб 9: Вовед во графови Креирање на граф

Dec 27th, 2018 (edited)
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.43 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class GraphCreate {
  4.  
  5.    
  6.     public static void main(String[] args) {
  7.    
  8.         Scanner scan = new Scanner(System.in);
  9.        
  10.         int n = scan.nextInt();
  11.         scan.next();
  12.         int nodes = scan.nextInt();
  13.         Graph graph = new Graph(nodes);
  14.        
  15.         for (int i=0; i<n; ++i) {
  16.             String line = scan.nextLine();
  17.             String parts[] = line.split(" ");
  18.            
  19.             switch(parts[0]) {
  20.    
  21.             case "ADDEDGE": graph.addEdge(Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
  22.                 break;
  23.             case "DELETEEDGE": graph.deleteEdge(Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
  24.                 break;
  25.             case "ADJACENT": System.out.println(graph.adjacent(Integer.parseInt(parts[1]), Integer.parseInt(parts[2])));
  26.                 break;
  27.             case "PRINTMATRIX": graph.printMatrix();
  28.                 break;
  29.             case "PRINTNODE": System.out.println(graph.get_node_value(Integer.parseInt(parts[1])));
  30.             }
  31.         }
  32.     }
  33. }
  34.  
  35. class Graph {
  36.    
  37.     int num_nodes; // broj na jazli
  38.     Character nodes[];    // informacija vo jazlite - moze i ne mora?
  39.     int adjMat[][];  // matrica na sosednost
  40.    
  41.    
  42.     @SuppressWarnings("unchecked")
  43.     public Graph(int num_nodes) {
  44.         this.num_nodes = num_nodes;
  45.         nodes = new Character[num_nodes];
  46.         for (int i=0; i< num_nodes; ++i)
  47.             nodes[i] = (char)(i + 'A');
  48.         adjMat = new int[num_nodes][num_nodes];
  49.        
  50.         for(int i=0;i<this.num_nodes;i++)
  51.             for(int j=0;j<this.num_nodes;j++)
  52.                 adjMat[i][j]=0;
  53.     }
  54.    
  55.    
  56.     int adjacent(int x,int y)
  57.     {  // proveruva dali ima vrska od jazelot so indeks x do jazelot so indeks y
  58.        return (adjMat[x][y]!=0)?1:0;
  59.     }
  60.    
  61.     void addEdge(int x,int y)
  62.     {  // dodava vrska megu jazlite so indeksi x i y
  63.        adjMat[x][y]=1;
  64.        adjMat[y][x]=1;
  65.     }
  66.    
  67.  
  68.     void deleteEdge(int x,int y)
  69.     {
  70.        // ja brise vrskata megu jazlite so indeksi x i y
  71.        adjMat[x][y]=0;
  72.        adjMat[y][x]=0;
  73.     }
  74.    
  75.     // Moze i ne mora?
  76.     Character get_node_value(int x)
  77.     {  // ja vraka informacijata vo jazelot so indeks x
  78.           return nodes[x];
  79.     }
  80.  
  81.     // Moze i ne mora?
  82.     void set_node_value(int x, Character a)
  83.     {  // ja postavuva informacijata vo jazelot so indeks na a
  84.        nodes[x]=a;
  85.     }
  86.    
  87.  
  88.     public int getNum_nodes() {
  89.         return num_nodes;
  90.     }
  91.  
  92.     public void setNum_nodes(int num_nodes) {
  93.         this.num_nodes = num_nodes;
  94.     }
  95.    
  96.    
  97.     void printMatrix() {
  98.         for (int i=0; i < adjMat.length; ++i) {
  99.             for (int j=0; j < adjMat[0].length; ++j)
  100.                 System.out.print(adjMat[i][j] + " ");
  101.             System.out.println();
  102.         }
  103.     }
  104. }
Add Comment
Please, Sign In to add comment