Untitled
unknown
plain_text
10 months ago
1.5 kB
2
Indexable
class Solution { public int networkDelayTime(int[][] times, int n, int k) { int dist[]=new int[n+1]; int max=Integer.MIN_VALUE; Arrays.fill(dist,Integer.MAX_VALUE); ArrayList<ArrayList<Pair>> adj=new ArrayList<>(); PriorityQueue<Pair> heap=new PriorityQueue<>((x,y)-> x.time-y.time); for(int i=0;i<=n;i++) { adj.add(new ArrayList<Pair>()); } for(int i=0;i<times.length;i++) { int source=times[i][0]; int dest=times[i][1]; int time=times[i][2]; adj.get(source).add(new Pair(time,dest)); } int start=times[0][0]; dist[start]=0; heap.add(new Pair(0,start)); while(!heap.isEmpty()) { int time=heap.peek().time; int node=heap.peek().dest; heap.remove(); for(int i=0;i<adj.get(node).size();i++) { int timeTaken=adj.get(node).get(i).time; int dest=adj.get(node).get(i).dest; if(time+timeTaken<dist[dest]) { dist[dest]=time+timeTaken; heap.add(new Pair(dist[dest],dest)); } } } for(int i=1;i<=n;i++) { max=Math.max(max,dist[i]); } return max==Integer.MAX_VALUE?-1:max; } } class Pair { int time=0; int dest=0; public Pair(int time,int dest) { this.time=time; this.dest=dest; } }
Editor is loading...
Leave a Comment