求助,P8817
  • 板块学术版
  • 楼主__Cby___
  • 当前回复33
  • 已保存回复33
  • 发布时间2023/10/4 19:13
  • 上次更新2023/11/2 15:43:42
查看原帖
求助,P8817
734049
__Cby___楼主2023/10/4 19:13
#include <iostream>
#include <algorithm>
#include <cstring> 
#include <vector>
#include <queue>
using namespace std;
vector<int> a[2525];
int v[2525];
vector<int> b[1525];
int dis[1525];
int d=0;
int m=0;
int k=0;
int ct[2500][2500];
int cmp(int u,int r){
	return v[u]>v[r];
}
int bfs(int n){
	memset(dis,-1,sizeof(dis));
	queue<int> q;
	q.push(n);
	dis[n]=0; 
	while(!q.empty()){
		int t=q.front();
		q.pop();
		if(n!=t){
			ct[n][t]=1;
			if(n!=1&&ct[1][t]){
				b[n].push_back(t);
			    sort(b[n].begin(),b[n].end(),cmp);
			    if(b[n].size()>3){
			    	b[n].pop_back();
				} 
			}
		}
		if(dis[t]==k+1){
			continue;
		}
		for(auto i:a[t]){
			if(dis[i]==-1){
				q.push(i);
				dis[i]=dis[t]+1;
			}
		}
	} 
}
int main(int argc,char **argv){
	int n;
	cin>>n;
	cin>>m;
	cin>>k;
	d=n;
	for(int i=2;i<=n;i++){
		cin>>v[i];
	}
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		a[x].push_back(y);
		a[y].push_back(x); 
	}
	for(int i=1;i<=n;i++){
		bfs(i);
	}
	int m=0;
	for(int B=2;B<=n;B++){
		for(int C=2;C<=n;C++){
			if(ct[B][C]){
				for(auto A:b[B]){
					for(auto D:b[C]){
						if(A!=C&&A!=D&&B!=D){
							m=max(m,v[A]+v[B]+v[C]+v[D]);
						}
					}
				}
			}
		}
	}
	cout<<m<<endl;;
	return 0;
}

本地运行,大数据都跑过了,为啥交上去全RE??
本地用任务管理器测了一下,内存才十几MB.
以前也有遇到这种情况.

2023/10/4 19:13
加载中...