#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.
以前也有遇到这种情况.