public int dijkstra(int s, int t) {
			for (int i = 0; i < cost.length; i++) {
				dis[i] = INF;
				vis[i] = false;
			}
			PriorityQueue<Edge> q = new PriorityQueue<Edge>();
			q.add(new Edge(s, 0, -1));
			dis[s] = 0;
			while (!q.isEmpty()) {
				Edge u = q.poll();
				if (u.id == t)
					return u.w;
				for (int j = 0; j < adj[u.id].size(); j++) {
					Edge v = adj[u.id].get(j);
					int w = v.w + ((u.e != v.e && u.e != -1) ? 60 : 0);
					if (u.w + w < dis[v.id]) {
						dis[v.id] = u.w + w;
						q.add(new Edge(v.id, dis[v.id], v.e));
					}
				}
			}
			return INF;
		}