#include<bits/stdc++.h>
using namespace std;
using pii = pair<int,int>;
int n,m,s;
vector<int> G[514514];
vector<pii> ask[514514];
int ans[514514];
bool vis[514514];
int fa[514514];
int find(int p) {
if(fa[p] == p) return p;
return fa[p] = find(fa[p]);
}
void dfs(int u,int f){
fa[u] = u;vis[u] = 1;
for(auto v : G[u]) if(v!=f) dfs(v,u);
for(auto v : ask[u]) {
int to = v.first,id = v.second;
if(to==f) continue;
if(vis[to]) ans[id] = find(to);
}
fa[u] = f;
}
int main(){
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<n;i++) {
int x,y;scanf("%d%d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
for(int i=1;i<=m;i++) {
int a,b;scanf("%d%d",&a,&b);
ask[a].push_back(make_pair(b,1));
ask[b].push_back(make_pair(a,1));
}
dfs(s,s);
for(int i=1;i<=n;i++) printf("%d\n",ans[i]);
return 0;
}