Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.Stack;
- class Graph<E> {
- int num_nodes; // broj na jazli
- E nodes[]; // informacija vo jazlite - moze i ne mora?
- int adjMat[][]; // matrica na sosednost
- @SuppressWarnings("unchecked")
- public Graph(int num_nodes) {
- this.num_nodes = num_nodes;
- nodes = (E[]) new Object[num_nodes];
- adjMat = new int[num_nodes][num_nodes];
- for(int i=0;i<this.num_nodes;i++)
- for(int j=0;j<this.num_nodes;j++)
- adjMat[i][j]=0;
- }
- public Graph(int num_nodes, E[] nodes) {
- this.num_nodes = num_nodes;
- this.nodes = nodes;
- adjMat = new int[num_nodes][num_nodes];
- for(int i=0;i<this.num_nodes;i++)
- for(int j=0;j<this.num_nodes;j++)
- adjMat[i][j]=0;
- }
- int adjacent(int x,int y)
- { // proveruva dali ima vrska od jazelot so indeks x do jazelot so indeks y
- return (adjMat[x][y]!=0)?1:0;
- }
- void addEdge(int x,int y)
- { // dodava vrska megu jazlite so indeksi x i y
- adjMat[x][y]=1;
- adjMat[y][x]=1;
- }
- void deleteEdge(int x,int y)
- {
- // ja brise vrskata megu jazlite so indeksi x i y
- adjMat[x][y]=0;
- adjMat[y][x]=0;
- }
- // Moze i ne mora?
- E get_node_value(int x)
- { // ja vraka informacijata vo jazelot so indeks x
- return nodes[x];
- }
- // Moze i ne mora?
- void set_node_value(int x, E a)
- { // ja postavuva informacijata vo jazelot so indeks na a
- nodes[x]=a;
- }
- public int getNum_nodes() {
- return num_nodes;
- }
- public void setNum_nodes(int num_nodes) {
- this.num_nodes = num_nodes;
- }
- @Override
- public String toString() {
- String ret=" ";
- for(int i=0;i<num_nodes;i++)
- ret+=nodes[i]+" ";
- ret+="\n";
- for(int i=0;i<num_nodes;i++){
- ret+=nodes[i]+" ";
- for(int j=0;j<num_nodes;j++)
- ret+=adjMat[i][j]+" ";
- ret+="\n";
- }
- return ret;
- }
- }
- public class GraphCreate{
- public static void main(String []args){
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- int N = Integer.parseInt(br.readLine());
- Graph<Character> graph=new Graph<>(0);
- for(int i =0;i<=N;i++){
- String lines[]=br.readLine().split(" ");
- if(lines[0].equals("CREATE"))
- graph=new Graph<>(Integer.parseInt(lines[1]));
- else if(lines[0].equals("ADDEDGE"))
- graph.addEdge(Integer.parseInt(lines[1]),Integer.parseInt(lines[2]));
- else if(lines[0].equals("PRINTMATRIX"))
- System.out.print(graph);
- else if(lines[0].equals("PRINTNODE"))
- System.out.println(graph.get_node_value(Integer.parseInt(lines[0])));
- else if(lines[0].equals("ADJACENT"))
- System.out.println(graph.adjacent(Integer.parseInt(lines[1]),Integer.parseInt(lines[2])));
- else if(lines[0].equals("DELETEEDGE"))
- graph.deleteEdge(Integer.parseInt(lines[1]),Integer.parseInt(lines[2]));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement