求助站外题MLE
  • 板块题目总版
  • 楼主xlsfyc
  • 当前回复13
  • 已保存回复13
  • 发布时间2021/8/24 19:52
  • 上次更新2023/11/4 09:10:25
查看原帖
求助站外题MLE
467089
xlsfyc楼主2021/8/24 19:52

题目:BZOJ2466【中山市选2009】树

结果:MLE 00

代码:

#include<bits/stdc++.h>
using namespace std;
int n,head[101]={0},to[201]={0},nxt[201]={0},a[101]={0},b[101]={0},c[101]={0},d[101]={0},cnt=0;
void add(int x,int y){to[++cnt]=y,nxt[cnt]=head[x],head[x]=cnt;}
void dfs(int x,int fa){
	a[x]=1,b[x]=c[x]=114514,d[x]=0;
	for(int i=head[x];i;i=nxt[i]){
		if(to[i]!=fa){
			dfs(to[i],x);int t;
			t=a[x],a[x]=min(a[x]+d[to[i]],c[x]+c[to[i]]),c[x]=min(c[x]+d[to[i]],t+c[to[i]]);
			t=b[x],b[x]=min(b[x]+b[to[i]],d[x]+a[to[i]]),d[x]=min(d[x]+b[to[i]],t+a[to[i]]);
		}                                                                                        
	}
}
int main(){
	while(scanf("%d",&n)!=EOF && n>0){
		int x,y;memset(head,0,sizeof(head));memset(to,0,sizeof(to));memset(nxt,0,sizeof(nxt));
		memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(d,0,sizeof(d));
		for(int i=1;i<=n-1;i++) scanf("%d%d",&x,&y),add(x,y),add(y,x);
		dfs(1,0);printf("%d\n",min(a[1],b[1]));
	}
	return 0;
}

怎么办?

2021/8/24 19:52
加载中...