Advertisement
Yahya-Ak-Ayoub

CSTREET_Cobbled_streets

Nov 7th, 2020 (edited)
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.30 KB | None | 0 0
  1.  
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import static java.lang.Integer.parseInt;
  6. import java.util.ArrayList;
  7. import java.util.Comparator;
  8. import java.util.PriorityQueue;
  9. import java.util.StringTokenizer;
  10.  
  11. public class Main {
  12.  
  13.     static BufferedReader reader;
  14.     static int price, n_buildings, m_streets;
  15.     static ArrayList<pair> graph[];
  16.     static boolean visited[];
  17.     static PriorityQueue<pair> q;
  18.     static long cost;
  19.  
  20.     public static void main(String[] args) throws IOException {
  21.         reader = new BufferedReader(new InputStreamReader(System.in));
  22.         int tc = parseInt(reader.readLine());
  23.         for (int t = 0; t < tc; t++) {
  24.             Input();
  25.             process();
  26.         }
  27.  
  28.     }
  29.  
  30.     public static void Input() throws IOException {
  31.  
  32.         StringTokenizer tok;
  33.         price = parseInt(reader.readLine());
  34.         n_buildings = parseInt(reader.readLine());
  35.         m_streets = parseInt(reader.readLine());
  36.         graph = new ArrayList[n_buildings + 1];
  37.         for (int i = 1; i <= n_buildings; i++) {
  38.             graph[i] = new ArrayList<pair>();
  39.         }
  40.         for (int i = 0; i < m_streets; i++) {
  41.             tok = new StringTokenizer(reader.readLine());
  42.             int node1 = parseInt(tok.nextToken()), node2 = parseInt(tok.nextToken()), cost = parseInt(tok.nextToken());
  43.             graph[node1].add(new pair(node2, cost));
  44.             graph[node2].add(new pair(node1, cost));
  45.         }
  46.  
  47.     }
  48.  
  49.     public static void process() {
  50.         visited = new boolean[n_buildings + 1];
  51.         q = new PriorityQueue<pair>(Comparator.comparing((pair obj) -> obj.cost));
  52.         q.add(new pair(1, 0));
  53.         cost = 0;
  54.         while (!q.isEmpty()) {
  55.             pair obj = q.poll();
  56.             if (!visited[obj.node]) {
  57.                 visited[obj.node] = true;
  58.                 cost += obj.cost;
  59.             }
  60.             for (pair i : graph[obj.node]) {
  61.                 if (!visited[i.node]) {
  62.                     q.add(i);
  63.                 }
  64.             }
  65.         }
  66.         System.out.println(price * cost);
  67.  
  68.     }
  69.  
  70.     static class pair {
  71.  
  72.         int node, cost;
  73.  
  74.         public pair(int node, int cost) {
  75.             this.node = node;
  76.             this.cost = cost;
  77.         }
  78.  
  79.     }
  80. }
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement