bfs 80pts TLE 求调
查看原帖
bfs 80pts TLE 求调
961351
nightwatch.ryan楼主2024/8/26 13:15
#include<bits/stdc++.h>
#define int long long
using namespace std;

#define P(i, a, b) for(int i = a; i <= b; i++)
#define Q(i, a, b) for(int i = a; i >= b; i--)
const int maxn = 1005;
const int inf = 0x3f3f3f3f;

mt19937 rnd(chrono::duration_cast<chrono::nanoseconds>
           (chrono::system_clock::now().time_since_epoch()).count());
int randint(int L, int R) {
    uniform_int_distribution<int> dist(L, R);
    return dist(rnd);
}

struct Node{
    int v, w;
};
vector<vector<Node>> G;
vector<int> maxd;

int n;
void bfs(int st){
    vector<int> dis(n + 1, -1);
    queue<int> q;
    q.push(st);
    dis[st] = 0;
    while(q.size()){
        int u = q.front();
        q.pop();
        for(auto &v : G[u]){
            int V = v.v, W = v.w;
            if(dis[V] == -1){
                dis[V] = dis[u] + W;
                q.push(V);
            }
        }
    }
    P(i, 1, n){
        maxd[st] = max(maxd[st], dis[i]);
    }
}

signed main(){

    cin.tie(0)->sync_with_stdio(0);
    while(cin >> n){
        G.assign(n + 1, vector<Node>());
        maxd.assign(n + 1, 0);
        P(i, 2, n){
            int v, w;
            cin >> v >> w;
            G[v].push_back({i,w});
            G[i].push_back({v,w});
        }
        P(i, 1, n){
            bfs(i);
            cout << maxd[i] << endl;
        }
    }

}
2024/8/26 13:15
加载中...