100,sub1 #17 WA
查看原帖
100,sub1 #17 WA
413301
Digital_Sunrise楼主2023/10/1 23:18
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int _ = 2505;

inline int read()
{
	int w = 1,f = 0;
	char c = getchar();
	while(c < '0' or c > '9')
	{
		if(c == '-') w = -1;
		c = getchar();
	}
	while(c >= '0' and c <= '9')
	{
		f = f * 10 + c - '0';
		c = getchar();
	}
	return w * f;
}

int n,m,k,ans;
int max1,max0,max_1;
int scr[_];
vector <int> G[_];
int dis0[_],dis[_][_];
bool vis[_];

struct fs
{
	int v,point;
//	fs(int v,int point) : v(v),point(point){}
	bool operator <(const fs &o) const{return v < o.v;};
}_fs[_][4];

void bfs0()
{
	queue <int> q;q.push(1);
	while(!q.empty())
	{
		int u = q.front();q.pop();
		for(int v : G[u])
		{
			if(v == 1 or dis0[v]) continue;
			dis0[v] = dis0[u] + 1;
			if(dis0[v] <= k) q.push(v);
		}
	}
}

void bfs(int z)
{
	queue <int> q;q.push(z);
	while(!q.empty())
	{
		int u = q.front();q.pop();
		for(int v : G[u])
		{
			if(v == z or dis[z][v]) continue;
			dis[z][v] = dis[z][u] + 1;
			if(dis0[v] <= k and dis0[v] and v != 1 and dis[z][v] <= k)
			{
				fs x;
				x.v = scr[v] + scr[z],x.point = v;
				_fs[z][0] = x;
				sort(_fs[z],_fs[z] + 3 + 1);
			}
			if(dis[z][v] <= k)
				q.push(v);
		}
	}
}

signed main()
{
	n = read();
	m = read();
	k = read();
	++k;
	for(int i = 2;i <= n;i++)
		scr[i] = read();
	for(int i = 1;i <= m;i++)
	{
		int u = read(),v = read();
		G[u].push_back(v);
		G[v].push_back(u);
	}
	bfs0();
	for(int i = 2;i <= n;i++)
		bfs(i);
//	for(int i = 2;i <= n;i++)
//	{
//		for(int j = 0;j <= 3;j++)
//			printf("(%lld,%lld) ",_fs[i][j].v,_fs[i][j].point);
//		cout << endl;
//	}
//	return 0;
	for(int i = 2;i <= n;i++)
	{
		for(int j = 2;j < i;j++)
		{
			if(dis[i][j] > k or dis[i][j] == 0) continue;
			for(int x = 1;x <= 3;x++)
			{
				for(int y = 1;y <= 3;y++)
				{
					if(_fs[i][x].point != j and _fs[j][y].point != i and _fs[i][x].point != _fs[j][y].point)
						ans = max(ans,_fs[i][x].v + _fs[j][y].v);
				}
			}
			
		}
	}
	cout << ans;
	return 0;
}
2023/10/1 23:18
加载中...