MOVE
다익스트라 알고리즘을 적용하여 문제를 풀어 보려했습니다.
우선순위 큐를 만들어 x, y 순으로 정렬하여 넣고
하나씩 꺼내서 배열에 적용시켰습니다.
동일 알고리즘으로 ROUTING 문제를 해결해서 똑같이 해보았는데
이번 문제는 어느 부분이 틀린지 못 찾겠습니다.
도움 부탁드립니다.
packagealgospot;importjava.util.*;classEdgeimplementsComparable<Edge>{intx;inty;intc;Edge(intx,inty,intc){this.x=x;this.y=y;this.c=c;}@OverridepublicintcompareTo(Edgee){// TODO Auto-generated method stubif(this.x>e.x)return1;elseif(this.x<e.x)return-1;else{if(this.y>e.y)return1;elseif(this.y<e.y)return-1;return0;}}}publicclassMove{staticPriorityQueue<Edge>q;publicstaticvoidmain(String[]args){// TODO Auto-generated method stubScannersc=newScanner(System.in);intC=sc.nextInt();while(C-->0){intN=sc.nextInt();intM=sc.nextInt();q=newPriorityQueue<>();for(inti=0;i<M;i++)q.add(newEdge(sc.nextInt(),sc.nextInt(),sc.nextInt()));System.out.println(run(N,M));}sc.close();}staticintrun(finalintN,finalintM){intdist[]=newint[N];dist[0]=0;for(inti=1;i<N;i++)dist[i]=Integer.MAX_VALUE;while(!q.isEmpty()){Edgetmp=q.poll();intlen=dist[tmp.x]+tmp.c;if(len<dist[tmp.y]||dist[tmp.y]==Integer.MAX_VALUE)dist[tmp.y]=len;}returndist[N-1];}}
7년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
샹아바
MOVE
다익스트라 알고리즘을 적용하여 문제를 풀어 보려했습니다.
우선순위 큐를 만들어 x, y 순으로 정렬하여 넣고
하나씩 꺼내서 배열에 적용시켰습니다.
동일 알고리즘으로 ROUTING 문제를 해결해서 똑같이 해보았는데
이번 문제는 어느 부분이 틀린지 못 찾겠습니다.
도움 부탁드립니다.
7년 전