100pts but wa on sub1#5
查看原帖
100pts but wa on sub1#5
716599
TheCliffSwallow楼主2023/6/14 21:14

求调QAQ

(代码有点臭请见谅

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<queue>
#include<map>
#include<vector>
#define int long long
#define ull unsigned long long
using namespace std;
const int INF=1e18;
int n,m,k,score[2505],d[2505][2505],val3[2505][5],ans;
bool vis[2505][2505];
vector<int>v[10005];
void bfs(int k){
	queue<int>q;
	q.push(k);
	vis[k][k]=true;
	while(!q.empty()){
		int tmp=q.front();
		q.pop();
		for(int i=0;i<v[tmp].size();i++){
			if(!vis[k][v[tmp][i]]){
				vis[k][v[tmp][i]]=true;
				d[k][v[tmp][i]]=d[k][tmp]+1;
				q.push(v[tmp][i]);
			}
		}
	}
}
int max1,max1v,max2,max2v,max3,max3v;
signed main(){
	cin>>n>>m>>k;
	for(int i=2;i<=n;i++)
		cin>>score[i];
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		v[x].push_back(y);
		v[y].push_back(x);
	}
	for(int i=0;i<2505;i++){
		for(int j=0;j<2505;j++){
			d[i][j]=INF;
		}
	}
	for(int i=1;i<=n;i++){
		d[i][i]=0;
		bfs(i);
	}
	for(int i=2;i<=n;i++){//枚举点
		max1=max2=max3=max1v=max2v=max3v=0;
		for(int j=2;j<=n;j++){//枚举公共点 
//			cout<<j<<endl;
			if(d[1][j]<=k+1&&d[i][j]<=k+1){
				if(score[j]>max1v){
					max3=max2;
					max2=max1;
					max3v=max2v;
					max2v=max1v;
					max1=j;
					max1v=score[j];
				}else if(score[j]>max2v){
					max3=max2;
					max3v=max2v;
					max2=j;
					max2v=score[j];
				}else if(score[j]>max3v){
					max3=j;
					max3v=score[j];
				}
				
			}
		}
//		cout<<max1<<' '<<max1v<<' '<<max2<<' '<<max2v<<' '<<max3<<' '<<max3v<<endl;
		val3[i][1]=max1;
		val3[i][2]=max2;
		val3[i][3]=max3;
	}
	for(int i=2;i<=n;i++){
		for(int j=2;j<=n;j++){
			if(d[i][j]>k+1||i==j)continue;
			for(int i1=1;i1<=3&&val3[i][i1];i1++){
				for(int j1=1;j1<=3&&val3[j][j1];j1++){
					int k=val3[i][i1],h=val3[j][j1];
					if(i!=k&&i!=h&&j!=k&&j!=h&&k!=h){
						ans=max(ans,score[i]+score[j]+score[h]+score[k]);
					}
				}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}
/*
8 8 1
9 7 1 8 2 3 6
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 1
*/
2023/6/14 21:14
加载中...