在atcoder中ac11个点 wa26个点 马蜂良好
#include<bits/stdc++.h>
#define debug(...) fprintf(stderr,##__VA_ARGS__)
#define int long long
using namespace std;
inline int read() {int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar();}while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;}
bool Men;
vector<int> edge[200005];
int n,k,fa[200005],vis[200005],b[200005];
void make(int nowat,int father){
fa[nowat]=father;
for(auto v:edge[nowat]){
if(v==father) continue;
make(v,nowat);
}
}
int ans=0;
void get(int nowat,int dis){
if(vis[nowat]==1){
ans+=dis;
return;
}
vis[nowat]=1;
get(fa[nowat],dis+1);
}
bool Mbe;
signed main(){
debug("%.8lfMB\n",(&Men-&Mbe)/1048576.0);
n=read(),k=read();
for(int i=1;i<n;i++){
int a=read(),b=read();
edge[a].push_back(b);
edge[b].push_back(a);
}
int x;
for(int i=1;i<=k;i++){
x=read();
b[i]=x;
vis[x]=1;
}
make(x,x);
for(int i=1;i<k;i++){
get(fa[i],0);
}
cout<<ans+k<<endl;
debug("%.8lfms\n",1e3*clock()/CLOCKS_PER_SEC);
return 0;
}
/*
Good Luck You'll Need it.
*/