제출 #1270489

#제출 시각아이디문제언어결과실행 시간메모리
1270489dorkikannTraining (IOI07_training)C++20
10 / 100
1 ms580 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 1e3 + 5;

vector<int> Graph[N];
vector<tuple<int, int, int>> Edges;

int Depth[N];
vector<pair<int, int>> Check[N];

int Solution[N];

void DFS1(int u, int parent)
{
    Depth[u] = Depth[parent] + 1;

    for(auto v : Graph[u]) {
        if(v != parent)
            DFS1(v, u);
    }
}

void Fix()
{
    for(auto [a, b, c] : Edges) {
        if(c == 0 || ((Depth[a] % 2) != (Depth[b] % 2)))
            continue;

        if(Depth[a] > Depth[b])
            Check[b].push_back({a, c});
        else
            Check[a].push_back({b, c});
    }
}

void DFS2(int u, int parent)
{
    for(auto v : Graph[u]) {
        if(v != parent) {
            DFS2(v, u);
            Solution[u] = max(Solution[u], Solution[v]);
        }
    }

    for(auto [v, c] : Check[u])
        Solution[u] = max(Solution[u], Solution[v] + c);
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, m, a, b, c;

    cin >> n >> m;

    int sum = 0;
    for(int i = 0; i < m; i++) {
        cin >> a >> b >> c;

        if(c == 0) {
            Graph[a].push_back(b);
            Graph[b].push_back(a);
        }
        sum += c;
        Edges.push_back({a, b, c});
    }
    DFS1(1, 0);
    Fix();

    DFS2(1, 0);
    cout << (sum - Solution[1]) << "\n";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...