제출 #1309970

#제출 시각아이디문제언어결과실행 시간메모리
1309970quollcucumber`Netrpeljivost (COI23_netrpeljivost)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
int parent[2048];
int dsu(int node) {
    if(parent[node] == node) return node;
    return parent[node] = dsu(parent[node]);
}
signed main(){
    for(int i = 0; i < 2048; i++) parent[i]= i;
    int n;
    cin >> n;
    int anti[n][n];
    vector<pair<int, pair<int, int>>> edges;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            cin >> anti[i][j];
            edges.push_back({anti[i][j], {i, j}});
        }
    }
    sort(edges.begin(), edges.end());
    int total = 0;
    int numedges[n];
    for(int i = 0; i < n ; i++) numedges[i] = 0;
    for(int i = 0; i < n * n; i++) {
        if(numedges[edges[i].second.first] < 2 && numedges[edges[i].second.second] < 2 && dsu(edges[i].second.first) != dsu(edges[i].second.second)) {
            total += edges[i].first;
            parent[dsu(edges[i].second.first)] = dsu(edges[i].second.second);
            numedges[edges[i].second.first]++;
            numedges[edges[i].second.second]++;
        }
    }
    cout<<total<<'\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...