public static void bfs(int root) {
		Queue<Integer> q = new LinkedList<Integer>();
		q.add(root);
		v[root] = true;
		while (!q.isEmpty()) {
			int node = q.poll();
			for (int i = 0; i < G[node].size(); i++) {
				Edge nodde = G[node].get(i);
				int neigh = nodde.to;
				if (!v[neigh]) {
					v[neigh] = true;
					T[neigh] = node;
					W[neigh] = nodde.l;
					L[neigh] = L[node] + 1;
					q.add(neigh);
				}
			}
		}
	}