为什么不输出啊???
#include<bits/stdc++.h>
using namespace std;
struct Edge{int nt,to;}e[100000];
int cnt,head[100000],dep[100000],n,m,s,x,y,a,b,fa[100000];
void swap(int x,int y)
{
int t=x;
x=y;
y=t;
}
void add(int x,int y)
{
e[++cnt].nt=head[x];
head[x]=cnt;
e[++cnt].to=y;
}
void dfs(int f)
{
for(int i=head[f];i;i=e[i].nt)
{
int t=e[i].to;
if(!dep[t])
{
dep[t]=dep[f]+1;
fa[t]=f;
dfs(t);
}
}
}
int bfs(int x,int y)
{
if(dep[x]<dep[y]) swap(x,y);
while(1)
{
if(dep[x]==dep[y]) break;
x=fa[x];
}
if(x==y) return y;
while(1)
{
x=fa[x];y=fa[y];
if(x==y)
return x;
}
}
int main()
{
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
dep[s]=1;
dfs(s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
printf("%d\n",bfs(a,b));
}
return 0;
}