这道题的题意很简单,就是一个有n个节点的完全图,图中任意两个节点i,j间有一个权值c(i,j),找出三个节点,i,j,k使得c(i, j)+c(j, k)+c(i, k)最大。
这个题的数据不大,所以直接用三个for循环就行
题目样例一似乎有问题
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int mp[333][333];
int t, n, u, v,weight;
cin >> t;
while (t--)
{
memset(mp, 0, sizeof(mp));
cin >> n;
int k = n * (n - 1) / 2;//因为为完全图
for (int i = 0; i < k; i++)
{
cin >> u >> v >> weight;
mp[u][v] = mp[v][u] = weight;
}
int Max = 0;
//三个循环找最大值
for (int i = 1; i <= n - 2; i++)
{
for (int j = i + 1; j <= n - 1; j++)
{
for (int x = j + 1; x <= n; x++)
{
int a = mp[i][j] + mp[i][x] + mp[x][j];
if (a > Max)
{
Max = a;
}
}
}
}
cout << Max << endl;
}
}