Advertisement
Kame3

Креирање на граф lab9.1

Jan 12th, 2021
838
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.47 KB | None | 0 0
  1. Креирање на граф Problem 1 (0 / 0)
  2.  
  3. Ваша задача е да креирате неориентиран нетежински граф со матрица на соседство, каде темињата како информација содржат буква. Графот го креирате според наредбите кои се добиваат. Ќе ви биде дадена низа од команди што можат да бидат од следните типови:
  4.  
  5. CREATE [број] - треба да креирате нов граф со дадениот број на темиња. Вредностите во темињата ќе бидат буквите од англиската азбука, според нивниот редослед. Така ако имате 3 темиња буквите ќе бидат: A, B и C. ADDEDGE [број1] [број2] - треба да креирате ребро меѓу темињата со реден број број1 и реден број број2. DELETEEDGE [број1] [број2] - треба да го избришете реброто меѓу темињата со реден број број1 и реден број број2. ADЈACENT [број1] [број2] - треба да испечатите 1 доколку темињата со реден број број1 и реден број број2 се соседни, во спротивност 0. PRINTMATRIX - Треба да ја испечатите матрицата на соседство PRINTNODE [број] - Треба да ја испечатите информацијата (т.е. буквата) за дадениот реден број на теме
  6.  
  7. Во првата линија на влезот е даден бројот на команди кои ќе следуваат.
  8.  
  9. Име на класа: GraphCreate
  10.  
  11.  
  12.  
  13. import java.util.Scanner;
  14.  
  15. public class GraphCreate {
  16.  
  17.    
  18.     public static void main(String[] args) {
  19.    
  20.         Scanner scan = new Scanner(System.in);
  21.        
  22.         int n = scan.nextInt();
  23.         scan.next();
  24.         int nodes = scan.nextInt();
  25.         Graph graph = new Graph(nodes);
  26.        
  27.         for (int i=0; i<n; ++i) {
  28.             String line = scan.nextLine();
  29.             String parts[] = line.split(" ");
  30.            
  31.             switch(parts[0]) {
  32.    
  33.             case "ADDEDGE": graph.addEdge(Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
  34.                 break;
  35.             case "DELETEEDGE": graph.deleteEdge(Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
  36.                 break;
  37.             case "ADJACENT": System.out.println(graph.adjacent(Integer.parseInt(parts[1]), Integer.parseInt(parts[2])));
  38.                 break;
  39.             case "PRINTMATRIX": graph.printMatrix();
  40.                 break;
  41.             case "PRINTNODE": System.out.println(graph.get_node_value(Integer.parseInt(parts[1])));
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. class Graph {
  48.    
  49.     int num_nodes; // broj na jazli
  50.     Character nodes[];    // informacija vo jazlite - moze i ne mora?
  51.     int adjMat[][];  // matrica na sosednost
  52.    
  53.    
  54.     @SuppressWarnings("unchecked")
  55.     public Graph(int num_nodes) {
  56.         this.num_nodes = num_nodes;
  57.         nodes = new Character[num_nodes];
  58.         for (int i=0; i< num_nodes; ++i)
  59.             nodes[i] = (char)(i + 'A');
  60.         adjMat = new int[num_nodes][num_nodes];
  61.        
  62.         for(int i=0;i<this.num_nodes;i++)
  63.             for(int j=0;j<this.num_nodes;j++)
  64.                 adjMat[i][j]=0;
  65.     }
  66.    
  67.    
  68.     int adjacent(int x,int y)
  69.     {  // proveruva dali ima vrska od jazelot so indeks x do jazelot so indeks y
  70.        return (adjMat[x][y]!=0)?1:0;
  71.     }
  72.    
  73.     void addEdge(int x,int y)
  74.     {  // dodava vrska megu jazlite so indeksi x i y
  75.        adjMat[x][y]=1;
  76.        adjMat[y][x]=1;
  77.     }
  78.    
  79.  
  80.     void deleteEdge(int x,int y)
  81.     {
  82.        // ja brise vrskata megu jazlite so indeksi x i y
  83.        adjMat[x][y]=0;
  84.        adjMat[y][x]=0;
  85.     }
  86.    
  87.     // Moze i ne mora?
  88.     Character get_node_value(int x)
  89.     {  // ja vraka informacijata vo jazelot so indeks x
  90.           return nodes[x];
  91.     }
  92.  
  93.     // Moze i ne mora?
  94.     void set_node_value(int x, Character a)
  95.     {  // ja postavuva informacijata vo jazelot so indeks na a
  96.        nodes[x]=a;
  97.     }
  98.    
  99.  
  100.     public int getNum_nodes() {
  101.         return num_nodes;
  102.     }
  103.  
  104.     public void setNum_nodes(int num_nodes) {
  105.         this.num_nodes = num_nodes;
  106.     }
  107.    
  108.    
  109.     void printMatrix() {
  110.         for (int i=0; i < adjMat.length; ++i) {
  111.             for (int j=0; j < adjMat[0].length; ++j)
  112.                 System.out.print(adjMat[i][j] + " ");
  113.             System.out.println();
  114.         }
  115.     }
  116. }
  117.  
  118.  
  119.  
  120. Sample input
  121.  
  122. 5
  123. CREATE 4
  124. ADDEDGE 0 3
  125. PRINTMATRIX
  126. PRINTNODE 2
  127. ADJACENT 0 2
  128. DELETEEDGE 3 0
  129.  
  130. Sample output
  131.  
  132. 0 0 0 1
  133. 0 0 0 0
  134. 0 0 0 0
  135. 1 0 0 0
  136. C
  137. 0
  138.  
  139.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement