fork download
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.Scanner;
  7. import java.util.StringTokenizer;
  8.  
  9.  
  10. class Main{
  11. static class V{
  12. int det;
  13. int val;
  14. public V(int det, int val) {
  15. super();
  16. this.det = det;
  17. this.val = val;
  18. }
  19. }
  20. public static void main(String[] args) throws NumberFormatException, IOException {
  21. StringTokenizer stk = new StringTokenizer(br.readLine());
  22. int n=Integer.parseInt(stk.nextToken());
  23. int m=Integer.parseInt(stk.nextToken());
  24. int st=Integer.parseInt(br.readLine());
  25.  
  26. int dist[] = new int[n+1];
  27. int visited[] = new int[n+1];
  28.  
  29. ArrayList<V>[] list=new ArrayList[n+1];
  30. for (int i = 0; i < list.length; i++) {
  31. list[i] = new ArrayList<V>();
  32. }
  33.  
  34. for (int i = 0; i < m; i++) {
  35. stk=new StringTokenizer(br.readLine());
  36. list[Integer.parseInt(stk.nextToken())].add(new V(Integer.parseInt(stk.nextToken()),Integer.parseInt(stk.nextToken())));
  37. }
  38. for (int i = 1; i < n+1; i++) {
  39. dist[i]=987654321;
  40. }
  41. for (int i = 0; i < list[st].size(); i++) {
  42. int det = list[st].get(i).det;
  43. int val = list[st].get(i).val;
  44. dist[det]=val;
  45. }
  46. dist[st]=0;
  47. visited[st]=1;
  48. for (int i =0 ; i < n-1 ; i++) {
  49. int min_index=st;
  50. int min=987654321;
  51. for (int j = 1; j < n+1; j++) {
  52. if(visited[j]!=1 && min > dist[j]) {
  53. min=dist[j];
  54. min_index=j;
  55. }
  56. }
  57. for (int j = 0; j < list[min_index].size(); j++) {
  58. int det = list[min_index].get(j).det;
  59. int val = list[min_index].get(j).val;
  60. if(visited[det]==0 &&dist[min_index]+val<dist[det])
  61. dist[det]=dist[min_index]+val;
  62. }
  63. visited[min_index]=1;
  64.  
  65. }
  66. for (int i = 1; i < n+1; i++) {
  67. if(dist[i]==987654321)
  68. System.out.println("INF");
  69. else {
  70. System.out.println(dist[i]);
  71. }
  72. }
  73. }
  74. }
Success #stdin #stdout 0.06s 32976KB
stdin
2 2
1
1 2 1
1 2 2
stdout
0
2