比赛 |
20250527CSP-S模拟 |
评测结果 |
|
题目名称 |
假期计划 |
最终得分 |
0 |
用户昵称 |
NahidaOI |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2025-05-27 16:38:43 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
#define Sangonomiya signed
#define Kokomi main()
#define Love return
#define Nahida 0
#define Forever ;
#define IOS cin.tie(nullptr)->sync_with_stdio(false)
#define cin std::cin
#define cout std::cout
const int N=1e6;
int n,m,k,ans,cnt;
int w[N];
struct node{
int next,v;
};
node edge[N];
int head[N];
void add(int u,int v){
edge[++cnt].next=head[u];
edge[cnt].v=v;
head[u]=cnt;
}
std::vector<int> f[2502];
bool vis[2502][2502];
int cmp(int x,int y){
return w[x]>w[y];
}
bool check(int a,int b,int c,int d){
if(a!=c&&b!=d&&a!=d){
return true;
}
return false;
}
void bfs(int x){
std::queue<int> op;
std::vector<int> dis(n+1,-1);
op.push(x);
dis[x]=0;
while(!op.empty()){
int u=op.front();
op.pop();
if(u!=x){
vis[x][u]=true;
if(x!=1&&vis[1][u]){
f[x].push_back(u);
std::sort(f[x].begin(),f[x].end(),cmp);
if(f[x].size()>3) f[x].pop_back();
}
}
if(dis[u]==k+1) continue;
for(int i=head[u];i;i=edge[i].next){
int v=edge[i].v;
if(dis[v]==-1){
dis[v]=dis[u]+1;
op.push(v);
}
}
}
}
Sangonomiya Kokomi{
freopen("csp2022_holiday.in","r",stdin);
freopen("csp2022_holiday.out","w",stdout);
cin>>n>>m>>k;
for(int i=2;i<=n;i++) cin>>w[i];
while(m--){
int u,v;
cin>>u>>v;
add(u,v);
add(v,u);
}
for(int i=1;i<=n;i++) bfs(i);
for(int i=2;i<=n;i++){
for(int j=2;j<=n;j++){
if(vis[i][j]){
for(auto k:f[i]){
for(auto l:f[j]){
if(check(k,i,j,l)){
ans=std::max(ans,w[i]+w[j]+w[k]+w[l]);
}
}
}
}
}
}
cout<<ans;
Love Nahida Forever;
}