sweet1cris

Untitled

Feb 10th, 2018
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.53 KB | None | 0 0
  1.  
  2. public class Solution {
  3.     /**
  4.      * @param n: maximum index of position.
  5.      * @param m: the number of undirected edges.
  6.      * @param x:
  7.      * @param y:
  8.      * @param w:
  9.      * @return: return the minimum risk value.
  10.      */
  11.     public class Edge {
  12.         int to, w;
  13.         Edge(int to, int w) {
  14.             this.to = to;
  15.             this.w = w;
  16.         }
  17.     }
  18.     public int dfs(int now, int target, int val, int res, boolean[] vis, List[] g) {
  19.         if (now == target) {
  20.             return val;
  21.         }
  22.         if (val >= res) {
  23.             return Integer.MAX_VALUE;
  24.         }
  25.         vis[now] = true;
  26.         for (int i = 0; i < g[now].size(); i++) {
  27.             Edge edge = (Edge)g[now].get(i);
  28.             if (vis[edge.to]) {
  29.                 continue;
  30.             }
  31.             res = Math.min(res, dfs(edge.to, target, Math.max(val, edge.w), res, vis, g));
  32.         }
  33.         vis[now] = false;
  34.         return res;
  35.     }
  36.     public int getMinRiskValue(int n, int m, int[] x, int[] y, int[] w) {
  37.         // Write your code here
  38.         boolean[] vis = new boolean[n + 1];
  39.         for (int i = 0; i < n + 1; i++) {
  40.             vis[i] = false;
  41.         }
  42.         ArrayList[] g = new ArrayList[n + 1];
  43.         for (int i = 0; i < n + 1; i++) {
  44.             g[i] = new ArrayList<Edge>();
  45.         }
  46.         for (int i = 0; i < m; i++) {
  47.             g[x[i]].add(new Edge(y[i], w[i]));
  48.             g[y[i]].add(new Edge(x[i], w[i]));
  49.         }
  50.         return dfs(0, n, 0, Integer.MAX_VALUE, vis, g);
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment