Advertisement
Josif_tepe

Untitled

Jul 1st, 2023
1,149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.87 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.Scanner;
  5.  
  6. class Graph {
  7.     int N;
  8.     List<List<Integer>> graph;
  9.     public int[] inDegree, outDegree;
  10.  
  11.     public Graph(int N) {
  12.         this.N = N;
  13.         graph = new ArrayList<>(N);
  14.         inDegree = new int[N];
  15.         outDegree = new int[N];
  16.         for(int i = 0; i < N; i++) {
  17.             graph.add(new ArrayList<>());
  18.             inDegree[i] = 0;
  19.             outDegree[i] = 0;
  20.         }
  21.     }
  22.     public void addEdge(int a, int b) {
  23.         graph.get(a).add(b);
  24.         outDegree[a]++;
  25.         inDegree[b]++;
  26.     }
  27.     public void deleteNode(int node) {
  28.         for(int i = 0; i < N; i++) {
  29.             if(graph.get(i).contains(node)) {
  30.                 graph.get(i).remove(node);
  31.             }
  32.         }
  33.         List<Integer> ls = graph.get(node);
  34.         graph.remove(ls);
  35.     }
  36.     public void printGraph() {
  37.         for(List<Integer> ls : graph) {
  38.             for(int i = 0; i < ls.size(); i++) {
  39.                 System.out.println(ls.get(i));
  40.             }
  41.         }
  42.     }
  43.  
  44.  
  45. }
  46. public class Main {
  47.     public static void main(String[] args) {
  48.         Scanner sc = new Scanner(System.in);
  49.         int n = sc.nextInt();
  50.         int m = sc.nextInt();
  51.         Graph g = new Graph(n);
  52.         for(int i = 0; i < m; i++) {
  53.             int a = sc.nextInt();
  54.             int b = sc.nextInt();
  55.             g.addEdge(a, b);
  56.         }
  57.         List<Integer> toDelete = new ArrayList<>();
  58.         for(int i = 0; i < n; i++) {
  59.             if(g.outDegree[i] > g.inDegree[i]) {
  60.                 toDelete.add(i);
  61.                 System.out.println(i + ", ");
  62.             }
  63.         }
  64.  
  65.         for(int i = 0; i < toDelete.size(); i++) {
  66.             g.deleteNode(toDelete.get(i));
  67.         }
  68.         g.printGraph();
  69.  
  70.     }
  71. }/*
  72. 4
  73. 5
  74. 0 1
  75. 1 2
  76. 2 0
  77. 0 3
  78. 3 2
  79. */
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement