public void dijkstraFire(int s) {
			PriorityQueue<Edge> q = new PriorityQueue<Edge>();
			q.add(new Edge(s, 0));
			dis[s] = 0;
			while (!q.isEmpty()) {
				Edge cur = q.poll();
				for (int i = 0; i < adj[cur.id].size(); i++) {
					Edge neigh = adj[cur.id].get(i);
					if (dis[cur.id] + neigh.w < dis[neigh.id]) {
						if (ss.contains(neigh.id))
							dis[neigh.id] = 0;
						else
							dis[neigh.id] = dis[cur.id] + neigh.w;
						q.add(new Edge(neigh.id, dis[neigh.id]));
					}
				}
			}
		}