int n,m; int[][][] g; int[] from,to,wt; long[]cost ; void solve() throws Exception { n= ni();m=ni(); from = new int[m]; to = new int[m]; wt = new int[m]; for(int i=0;i pq=new PriorityQueue<>(); pq.add(new pair(0,1)); while(!pq.isEmpty()){ // dbg(pq); pair p=pq.poll(); int vertex = (int)p.y; long weight= p.x ; if(vis[vertex]) continue; vis[vertex]=true; cost[vertex]=p.x; for(int[] q :g[vertex]){ if(vis[q[0]]) continue; pq.add(new pair(wt[q[1]]+weight,q[0])); } } }