95求debug
查看原帖
95求debug
483058
陈泽涵爱g编程楼主2023/9/29 17:40
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<vector> 
using namespace std;
#define int long long
int n, m, k;
const int maxn = 2600;
int win[maxn];
vector<int>g[maxn];
int numk[maxn][maxn];
queue<int>q;
void bfs(int x) {
	numk[x][x] = -1;
	q.push(x);
	while(!q.empty()) {
		int u = q.front();
		q.pop();
		for(int i = 0; i < g[u].size(); i++) {
			int v = g[u][i];
			if(numk[x][v] > numk[x][u] + 1) {
				numk[x][v] = numk[x][u] + 1;
				q.push(v); 
			}
		}
	}
	return;
}
struct node {
	int  x, win;
	bool operator < (const node a) const{
		return win > a.win;
	} 
};
vector<node>f[maxn];
signed main() {
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	cin >> n >> m >> k;
	for(int i = 2; i <= n; i++) {
		cin >> win[i];
	} 
	for(int i = 1; i <= m; i++) {
		int u, v;
		cin >> u >> v;
		g[u].push_back(v);
		g[v].push_back(u); 
	}
	for(int i  = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			numk[i][j] = 1e9;
		}
	}
	for(int i = 1; i <= n; i++) {
		bfs(i);	
	}
//	for(int i = 1; i <= n; i++) {
//		for(int j = 1; j <= n; j++) {
//			cout << numk[i][j] << ' ';
//		}
//		cout << '\n';
//	}
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			if(i != j && numk[i][j] <= k && numk[j][1] <= k) {
				f[i].push_back({j, win[j]});
				sort(f[i].begin() , f[i].end() );
				if(f[i].size() > 4) {
					f[i].pop_back();
				}
			}
		}
	}
	int ans = 0;
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			if(i == j) continue;
			for(int f1 = 0; f1 < f[i].size(); f1++) {
				for(int f2 = 0; f2 < f[j].size(); f2++) {
					int a = f[i][f1].x, b = f[j][f2].x;
					if(i != a && a != j && a != b && b != i && b != j && numk[i][a] <= k && numk[j][b] <= k && numk[i][j] <= k) {
						ans = max(ans, win[i] + win[j] + win[a] + win[b]);
//						cout << i << ' ' << j << ' ' << a << ' ' << b << ' ' << ans << ' ' << numk[i][a] << ' ' << numk[k][b] << '\n';
					} 
				}
			}
		}
	}
	cout << ans;
	return 0;
}
2023/9/29 17:40
加载中...