最后一个结点mle求助。
查看原帖
最后一个结点mle求助。
255013
T___Y楼主2024/3/14 23:27

代码如下

#include <bits/stdc++.h>
using namespace std;
void dfs(int len, vector<vector<int>> g, int father, vector<int> &dist, int now) {
    dist[now] = len;
    for (int i = 0; i < g.size(); i++) {
        if (i != father&&g[now][i]!=0) {
            dfs(len + g[now][i], g, now, dist, i);
        }
    }
}
int main() {
    int n;
    cin >> n;
    vector<vector<int>> g(n, vector<int>(n, 0));
    vector<int> dist(n + 1);
    for (int i = 0; i < n - 1; i++) {
        int p, q, d;
        cin >> p >> q >> d;
        g[q-1][p-1] = g[p-1][q-1] = d;
    }
    dfs(0, g, -1, dist, 0);
    long long len = 0;
    int pos = 0;
    for (int i = 0; i < n; i++) {
        if (dist[i] > dist[pos]) {
            pos = i;
        }
    }
    dfs(0, g, -1, dist, pos);
    for (int i = 0; i < n; i++) {
        if (dist[i] > dist[pos]) {
            pos = i;
            len = dist[i];
        }
    }
    cout << 10 * len + (1 + len) * len / 2;
    return 0;
}
2024/3/14 23:27
加载中...