?????
  • 板块灌水区
  • 楼主c_y_y
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/1 16:19
  • 上次更新2024/5/1 16:22:41
查看原帖
?????
777965
c_y_y楼主2024/5/1 16:19

编译错哪里了?

#include<bits/stdc++.h>
using namespace std;

inline long long read(){
	long long x=0;
	int f=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
	return x*f;
}

const int N=(1e5+10);
int d[N],f[N][32],dis[N];
vector<int>g[N];
queue<int>q;
void dfs(int u,int fa){
	d[u]=d[fa]+1,f[u][0]=fa;
	for(int i=1;i<=31;i++) f[u][i]=f[f[u][i-1]][i-1];
	for(int i=0;i<g[u].size();i++)
		if(g[u][i]!=fa) dfs(g[u][i],u);
}
int lca(int x,int y){
	if(x<=y) swap(x,y);
	for(int i=31;i>=0;i--) if(d[f[x][i]]>=d[y]) x=f[x][i];
	if(x==y) return x;
	for(int k=31;k>=0;k--) if(f[x][k]!=f[y][k]) x=f[x][k],y=f[y][k];
	return f[x][0];
}
int main(){
	int n=read(),k=read(),q=read();
	for(int i=1;i<n;i++){
		int x=read(),y=read();
		g[x].push_back(y),g[y].push_back(x);
	}
	memset(dis,0x3f3f3f3f,sizeof(dis));
	for(int i=1;i<=k;i++){
		int x=read();
		dis[x]=0,q.push(x);
	}
	while(q.size()){
		int x=q.front();
		q.pop();
		for(int i=0;i<g[x].size();i++){
			int v=g[x][i];
			if(dis[v]==0x3f3f3f3f) dis[v]=dis[x]+1,q.push(v);
		}
	}
	dfs(1,0);
	for(int i=1;i<=q;i++){
		int x=read(),y=read();
		printf("%d\n",min(d[x]+d[y]-2*d[lca(x,y)]+1,dis[x]+dis[y]));
	}
	return 0;
}


错误信息: /tmp/compiler_he6w0pho/src:19:15: 警告:comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 19 | for(int i=0;i<g[u].size();i++) |

2024/5/1 16:19
加载中...