void iterative_dfs(unsigned v) {
	stack.push(v);
	while (!stack.empty()) {
		unsigned top = stack.top();
		stack.pop();
		if (!marked[top]) {
			marked[top] = true;
			for (auto u : arr[top]) {
				stack.push(u);
			}
		}
	}
}
