Q23 Connecting Cities With Minimum Cost - Coding Ninjas

PHOTO EMBED

Thu Apr 27 2023 11:33:19 GMT+0000 (Coordinated Universal Time)

Saved by @Ayush_dabas07

import java.util.* ;
import java.io.*; 
public class Solution {

    public static int getMinimumCost(int cities, int roads, int[][] Connections) {
        /* Q23 graph playlist , we need to find MST using prims algo
         */
         
         //making graph
        ArrayList<ArrayList<pair>> graph = new ArrayList<>();
	    
	    for(int i = 0 ;i < cities ; i++)
	    graph.add(new ArrayList<>());
	    
	    for(int[] connections : Connections){
	        graph.get(connections[0]-1).add(new pair(connections[1]-1,connections[2]));
	        graph.get(connections[1]-1).add(new pair(connections[0]-1,connections[2]));
	    }
	    
        //Prims to find MST
	    PriorityQueue<pair> q = new PriorityQueue<>();
	    q.add(new pair(0 , 0));
	    
	    int ans = 0 , count = 0;
	    boolean visited[] = new boolean[cities];
	    while(q.size() > 0){
	        pair rem = q.poll();
	        
	        int v = rem.v ,wt = rem.wt;
	        if(visited[v] == true)
	        continue;
	        
	        visited[v] = true;
	       // System.out.print(v + " " + wt + "\n");
	        ans += wt;
	
	        for(pair edge : graph.get(v)){
	            if(visited[edge.v] == false){
	                q.add(new pair(edge.v , edge.wt));
	            }
	        }
	        count ++;
	    }
	    
	    return count == cities ? ans : -1;

    }

    public static class pair implements Comparable<pair>{
        int v , wt ;
	    
	    pair(int v , int wt){
	        this. v = v;
	        this.wt = wt;
	    }
	    
	    public int compareTo(pair o){
	        return this.wt - o.wt;
	    }
    }    
}

content_copyCOPY

https://www.codingninjas.com/codestudio/problems/connecting-cities-with-minimum-cost_1386586