卡时n^4ac了?
查看原帖
卡时n^4ac了?
571226
xjc12345楼主2022/10/31 11:00
#include <bits/stdc++.h>
#define tim ((double)clock()/CLOCKS_PER_SEC)
#define ll long long
#define pc putchar
#define int long long
using namespace std;
inline int read()
{
	int f=0,r=0;char c=getchar();
	while(!isdigit(c)) f|=(c=='-'),c=getchar();
	while(isdigit(c)) r=(r<<1)+(r<<3)+(c^'0'),c=getchar();
	return f? -r:r;
}
char nnu[25];
inline void write(int x)
{
	if(x==0) {pc('0');return;}
	if(x<0) {pc('-');x=-x;}
	int top=0;
	while(x) nnu[++top]=x%10+'0',x/=10;
	for(int i=top;i;i--) pc(nnu[i]);
	return;
}
const int maxn=2505,maxm=100004;
int nxt[maxm],head[maxn],ver[maxm],ver_tot;
inline void addedge(int u,int v) {ver[++ver_tot]=v;nxt[ver_tot]=head[u];head[u]=ver_tot;return;}
bitset<maxn> vis[maxn];
queue<int> q;
#define pi pair<int,int>
pi w[maxn];
int n,m,dep[maxn],k,a[maxn],id[maxn];
inline void bfs(int id)
{
	q.push(id);
	memset(dep,0,sizeof(dep));
	dep[id]=1;
	while(q.size())
	{
		int now=q.front();q.pop();
		for(int i=head[now];i;i=nxt[i])
		if(!dep[ver[i]])
		{
			dep[ver[i]]=dep[now]+1;
			vis[id][ver[i]]=(dep[ver[i]]<=k+2);
			q.push(ver[i]);
		}
	}
}
signed main()
{
	//freopen("holiday.in","r",stdin);
	//freopen("holiday.out","w",stdout);
//	freopen("dta.txt","r",stdin);
	n=read();m=read();k=read();
	for(int i=2;i<=n;i++) a[i]=read(),w[i]=pi{a[i],i};
	sort(w+2,w+1+n);
	for(int i=2;i<=n;i++) id[w[i].second]=i;
	id[1]=1;
	for(int i=1;i<=m;i++) {int u=read(),v=read();addedge(id[u],id[v]);addedge(id[v],id[u]);}
	for(int i=1;i<=n;i++) bfs(i);
	int ans=0;
	for(int i=n;i>=2;i--)
	{
		if(vis[1][i])
		for(int j=n;j>=2;j--)
		{
			if(vis[i][j] && j!=i)
			{
				for(int k=n;k>=2;k--)
				{
					if(vis[j][k] && k!=i && k!=j)
					{
						for(int l=n;l>=2;l--)
						{
							if(vis[k][l] && vis[l][1] && l!=i && l!=j && l!=k)
							{
								ans=max(ans,w[i].first+w[j].first+w[k].first+w[l].first);
							}
							if(tim>1.80) {write(ans);pc('\n');exit(0);}
						}
					}
					if(tim>1.80) {write(ans);pc('\n');exit(0);}
				}
			}
			if(tim>1.80) {write(ans);pc('\n');exit(0);}
		}
		if(tim>1.80) {write(ans);pc('\n');exit(0);}
	}
	write(ans);
	pc('\n');
}
2022/10/31 11:00
加载中...