WA on #7 #11 #17求助
查看原帖
WA on #7 #11 #17求助
332304
寺中言楼主2022/10/31 23:04
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline void read(int &x){
	x=0;
	int y=1;
	char a;
	a=getchar();
	while(a>'9'||a<'0'){
		if(a=='-')y=-1;
		a=getchar();
	}
	while(a>='0'&&a<='9'){
		x=x*10+a-'0';
		a=getchar();
	}
	x*=y;
}
int n,m,k;
int w[4888],fz[4888][6];
vector<int>f[4888];
vector<int>ft[4888];
int fans;
int fd[4888],d[4888],qfz[4888];
int l,r;
void bfs(int x){
	for(int i=1;i<=n;++i)d[i]=0x7f7f7f7f;
	for(int i=1;i<=n;++i)qfz[i]=0;
	l=r=1,fd[l]=x,d[x]=-1,qfz[x]=1;
	while(l<=r){
		int y=fd[l];++l;
		for(int i=0;i<f[y].size();++i){
			int z=f[y][i];
			if(qfz[z])continue;
			++r;
			fd[r]=z,d[z]=d[y]+1;
			qfz[z]=1;
		}
	}
	for(int i=1;i<=n;++i){
		if(i==x)continue;
		if(d[i]>k)continue;
		ft[x].push_back(i);
	}
}
void findans(int x,int y){
	int xz=1,yz=1;
	if(fz[x][xz]==y)xz+=2;
	if(fz[y][yz]==x)yz+=2;
	if(fz[x][xz]!=fz[y][yz]){
		fans=max(fans,fz[x][xz-1]+fz[y][yz-1]+w[x]+w[y]);
		return;
	}
	if(fz[x][xz+2]!=y)fans=max(fans,fz[x][xz+1]+fz[y][yz-1]+w[x]+w[y]);
	if(fz[y][yz+2]!=x)fans=max(fans,fz[x][xz-1]+fz[y][yz+1]+w[x]+w[y]);
}
signed main(){
	read(n);read(m);read(k);
	for(int i=2;i<=n;++i)read(w[i]);
	for(int i=1;i<=m;++i){
		int a,b;
		read(a);read(b);
		f[a].push_back(b);
		f[b].push_back(a);
	}
	for(int i=1;i<=n;++i)bfs(i);
	for(int i=0;i<ft[1].size();++i){
		int x=ft[1][i];
		for(int j=0;j<ft[x].size();++j){
			int y=ft[x][j];
			if(w[x]>=fz[y][0]){
				fz[y][4]=fz[y][2],fz[y][5]=fz[y][3];
				fz[y][2]=fz[y][0],fz[y][3]=fz[y][1];
				fz[y][0]=w[x],fz[y][1]=x;
			}
			else{
				if(w[x]>=fz[y][2]){
					fz[y][4]=fz[y][2],fz[y][5]=fz[y][3];
					fz[y][2]=w[x],fz[y][3]=x;
				}
				else{
					if(w[x]>=fz[y][4]){
						fz[y][4]=w[x],fz[y][5]=x;
					}
				}
			}
		}
	}
	fans=-1e9;
	for(int i=2;i<=n;++i){
		if(fz[i][1]==0)continue;
		for(int j=0;j<ft[i].size();++j){
			int x=ft[i][j];
			if(fz[x][1]==0)continue;
			findans(i,x);
		}
	}
	cout<<fans<<endl;
	return 0;
}

求助,救救孩子吧,调了一个下午加一个晚上了

2022/10/31 23:04
加载中...