Esempio n. 1
0
void setup(void) {
    mkroot();
    ent * sch = mksched();
    assert(SUCCESS == LINK_R(root(), sch, "proc"));
    ent* mm = mkmm();
    assert(SUCCESS == LINK_R(root(), mm, "mm"));
}
Esempio n. 2
0
int main()
{
	freopen("1036.in","r",stdin);
	freopen("1036.out","w",stdout);
	int n,m;dmax[0]=-INF;
	scanf("%d",&n);
	for(int i=1,p1,p2;i<=n-1;i++)
	{
		scanf("%d%d",&p1,&p2);
		addEdge(p1,p2);
		addEdge(p2,p1);
	}
	setTree(1);
	for(int i=1;i<=n;i++) scanf("%d",&val[i]);
	for(int i=1;i<=n;i++) access(i);
	scanf("%d",&m);
	char odr[11];
	for(int i=1,p1,p2;i<=m;i++)
	{
		scanf("%s%d%d",odr,&p1,&p2);
		if(odr[1]=='H')
			val[p1]=p2;
		else if(odr[1]=='M')
		{
			mkroot(p1);
			access(p2);
			splay(p2);
			printf("%d\n",Max(dmax[son[p2][0]],val[p2]));
		}
		else
		{
			mkroot(p1);
			access(p2);
			splay(p2);
			printf("%d\n",sum[son[p2][0]]+val[p2]);
		}
	}
	
}
Esempio n. 3
0
void link(int p,int pt)
{
	mkroot(p);
	fa[p]=pt;
//	access(p);
}