Cod sursa(job #2830393)

Utilizator Angel2IonitaAngel Ionita Angel2Ionita Data 9 ianuarie 2022 20:56:34
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream f("asmax.in");
ofstream o("asmax.out");

class Graph
{
    vector<vector<int>> adjList;
    vector<bool> vis;
    int size, maxVal = -2147483648;

public:
    vector<int> valori;
    Graph(int n)
    {
        size = n;
        adjList.resize(size+1);
        valori.resize(size+1);
        for (int i = 0; i < size+1; i++)
            vis.push_back(false);
    }
    void addEdge(int start, int end)
    {
        adjList[start].push_back(end);
        adjList[end].push_back(start);
    }
    int DFS(int node)
    {
        vis[node] = true;
        for (auto i : adjList[node])
            if (!vis[i])
            {
                DFS(i);
                if (valori[i] > 0)
                    valori[node] += valori[i];
            }
        if (valori[node] > maxVal)
            maxVal = valori[node];
        return maxVal;
    }
};

int main()
{
    int N, x, y;
    f >> N;
    Graph g(N);
    for (int i = 1; i <= N; i++)
    {
        f>>g.valori[i];
    }
    for (int i = 0; i < N; i++)
    {
        f >> x >> y;
        g.addEdge(x, y);
    }
    o<<g.DFS(1);
}