Skip to content

Instantly share code, notes, and snippets.

@chermehdi
Created September 2, 2018 15:39
Show Gist options
  • Save chermehdi/37da9abb136807978d81999241f89c44 to your computer and use it in GitHub Desktop.
Save chermehdi/37da9abb136807978d81999241f89c44 to your computer and use it in GitHub Desktop.
D
package com.mehdi.main.codeforces.codefest18;
import com.mehdi.lib.GraphUtils;
import com.mehdi.lib.io.InputReader;
import java.io.PrintWriter;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import static com.mehdi.lib.Factories.*;
public class TaskD {
List<Integer>[] g;
int n;
int[] lev, seq;
void bfs(int cur) {
lev[cur] = 1;
ArrayDeque<Integer> q = new ArrayDeque<>();
q.add(cur);
while (!q.isEmpty()) {
int u = q.poll();
for (int v : g[u]) {
if (lev[v] == 0) {
lev[v] = lev[u] + 1;
q.add(v);
}
}
}
}
public void solve(int testNumber, InputReader in, PrintWriter out) {
n = in.nextInt();
g = GraphUtils.generateGraph(n + 1);
lev = new int[n + 1];
seq = new int[n + 1];
for (int i = 0; i < n - 1; i++) {
int u = in.nextInt();
int v = in.nextInt();
g[u].add(v);
g[v].add(u);
}
for (int i = 1; i <= n; i++) {
seq[i] = in.nextInt();
}
bfs(1);
if (seq[1] != 1) {
out.println("No");
return;
}
int level = 1;
int[] arr = new int[n + 1];
int pt = 0;
for (int i = 1; i <= n; i++) {
int u = seq[i];
if (lev[u] < level) {
out.println("No");
return;
}
arr[pt++] = lev[u];
level = lev[u];
}
for (int i = 1; i < pt; i++) {
if (arr[i] < arr[i - 1]) {
out.println("No");
return;
}
}
out.println("Yes");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment