第三行报错:[Error] expected primary-expression before 'long'
搜索无果。
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define LL k<<1
#define RR l<<1|1
#define lg log2
#define endl '\n'
const int MAXN=2e5+1;
struct edge {
int to,next;
} w[MAXN*2];
int h[MAXN],cnt=0,d[MAXN],prt[MAXN],p[MAXN][50],n,m,root;
void AddEdge(int x,int y) {
w[++cnt].to=y;
w[cnt].next=h[x];
h[x]=cnt;
}
void DFS(int x,int deep) {
d[x]=deep;
for(int i=h[x]; i; i=w[i].next)
DFS(w[i].to,deep+1);
}
void Read() {
int i,x,y;
cin>>n>>m;
for(i=1; i<=n-1; i++) {
cin>>x>>y;
AddEdge(x,y);
prt[y]=x;
}
root=1;
while(prt[root]!=0)root=prt[root];//找根结点
}
void ST() {
int i,j;
memset(p,-1,sizeof(p));//初始化
for(i=1; i<=n; i++)p[i][0]=prt[i]; //指向父结点
for(j=1; (1<<j)<=n; j++)
for(i=1; i<=n; i++)
if(p[i][j-1]!=-1)p[i][j]=p[p[i][j-1]][j-1];
}
int LCA(int a,int b) {
int k,i;
if(d[a]<d[b])swap(a,b);
k=int(lg(d[a])/lg(2));
for(i=k; i>=0; i--)if(d[a]-(1<<i)>=d[b])a=p[a][i];
if(a==b)return b;
for(i=k; i>=0; i--)
if(p[a][i]!=-1&&p[a][i]!=p[b][i]) {
a=p[a][i];
b=p[b][i];
}
return p[a][0];
}
void Solve() {
int i,x,y;
for(i=1; i<=m; i++) {
cin>>x>>y;
cout<<LCA(x,y)<<'\n';
}
}
signed main() {
return 0;
}