147232025-01-30 07:22:23RRoliLogisztikai központcpp17Hibás válasz 0/501.065s41580 KiB
#include <bits/stdc++.h>
#include <climits>
using namespace std;
#define f first
#define s second

vector<unordered_map<int,int>> m;
int mapmax(int ind, int k) {
    long long ln = 0;
    for(auto i : m[ind]) {
        if(i.f != k) {
            if(i.s > ln) ln = i.s;
        }
    }
    return ln;
}

int main() {
    int n;
    cin >> n;
    vector<vector<pair<int,int>>> szom(n+1, vector<pair<int,int>>(0));
    vector<int> fok(n+1, 0), tav(n+1, 0);
    vector<bool> volt(n+1, false);
    m.resize(n+1);

    for(int i = 0; i < n-1; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        szom[a].push_back(make_pair(b, c));
        szom[b].push_back(make_pair(a, c));
        fok[a]++;
        fok[b]++;
    }

    queue<int>sor;
    for(int i = 1; i <= n; i++) {
        if(fok[i] == 1) {
            sor.push(i);
            volt[i] = true;
            m[i][i] = 0;
        }
    }

    while(!sor.empty()) {
        for(auto j : szom[sor.front()]) {
            if(!volt[j.f]) {
                m[j.f][sor.front()] = mapmax(sor.front(), -1) + j.s;
                fok[j.f]--;
                if(fok[j.f] == 1) {
                    sor.push(j.f);
                    volt[j.f] = true;
                }
            }
        }
        sor.pop();
    }

    int ln = 0, ind = -1;
    for(int i = 1; i <= n; i++) {
        int p = mapmax(i, -1);
        if(p > ln) {
            ln = p;
            ind = i;
        }
    }

    volt.resize(0);
    volt.resize(n+1, false);

    sor.push(ind);
    volt[ind] = true;
    while(!sor.empty()) {
        for(auto j : szom[sor.front()]) {
            if(!m[sor.front()].count(j.f)) {
                m[sor.front()][j.f] = mapmax(sor.front(), j.f) + j.s;
            }
            if(!volt[j.f]) {
                volt[j.f] = true;
                sor.push(j.f);
            }
        }
        sor.pop();
    }

    for(int i = 1; i <= n; i++) {
        cout << endl << i << endl;
        for(auto j : m[i]) cout << j.f << ": " << j.s << endl;
    }

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/0954ms33332 KiB
3Hibás válasz0/41ms316 KiB
4Hibás válasz0/41ms316 KiB
5Hibás válasz0/41ms316 KiB
6Hibás válasz0/42ms500 KiB
7Hibás válasz0/42ms316 KiB
8Hibás válasz0/58ms752 KiB
9Időlimit túllépés0/21.065s36572 KiB
10Időlimit túllépés0/21.065s36736 KiB
11Hibás válasz0/24ms564 KiB
12Futási hiba0/23ms820 KiB
13Hibás válasz0/248ms2100 KiB
14Hibás válasz0/297ms3892 KiB
15Hibás válasz0/2933ms34016 KiB
16Hibás válasz0/2927ms32056 KiB
17Időlimit túllépés0/21.008s35124 KiB
18Hibás válasz0/2754ms26772 KiB
19Időlimit túllépés0/21.044s41580 KiB
20Hibás válasz0/3813ms33884 KiB