Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int main ()
- {
- int n, m;
- cin >> n >> m;
- int p[n]; bool used[n];
- for (int i = 0; i < n; i++)
- {
- used[i] = false;
- }
- vector <vector <int> > g(m);
- for (int i = 0, x; i < n - 1; i++)
- {
- cin >> x;
- p[x] = i;
- }
- int s;
- cin >> s;
- for (int i = 0, a, b; i < n; i++)
- {
- cin >> a >> b;
- g[a - 1].push_back(b - 1);
- g[b - 1].push_back(a - 1);
- }
- vector <int> v;
- v.push_back(s);
- int ans = n - 1;
- used[s] = true;
- while (!v.empty())
- {
- int top = v[v.size() - 1];
- v.pop_back();
- for (int i = 0; i < g[top].size(); i++)
- {
- if (!used[g[top][i]])
- {
- g[top][i] = true;
- v.push_back(g[top][i]);
- if (p[g[top][i]] < ans) ans = p[g[top][i]];
- }
- }
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement