请问这个编译警告有事吗?
查看原帖
请问这个编译警告有事吗?
124676
JimmyFlower楼主2024/8/9 13:08

Rt,这个警告有关系吗?

27:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] 
  for(ri i=0;i<tr[now].son.size();i++) 
              ^ 
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ri register int
#define ui unsigned int
using namespace std;
typedef long long ll;
const int MAXN=2147483646;
int T,n,x;
struct tree
{
	int x,f,dmax;
	vector<int> son;
}tr[200010];
void treedp(int now)
{
	if(!tr[now].son.size()){tr[now].dmax=tr[now].x;return;}
	for(ri i=0;i<tr[now].son.size();i++) //27行在这里
	{
		int son=tr[now].son[i];
		treedp(son);
		tr[now].dmax=min(tr[now].dmax,tr[son].dmax);
	}
	if(now!=1&&tr[now].dmax>tr[now].x)
		tr[now].dmax=tr[now].x+(tr[now].dmax-tr[now].x)/2;
}
void solve()
{
	scanf("%d",&n);
	for(ri i=1;i<=n;i++)
	{
		scanf("%d",&tr[i].x);
		tr[i].son.clear(),tr[i].dmax=MAXN;
		tr[i].f=tr[i].x;
	}
	for(ri i=2;i<=n;i++)
		scanf("%d",&x),tr[x].son.push_back(i);
	treedp(1);
	printf("%d\n",tr[1].x+tr[1].dmax);
}
int main()
{
	scanf("%d",&T);
	while(T--) solve();
	return 0;
}
2024/8/9 13:08
加载中...