제출 #1333778

#제출 시각아이디문제언어결과실행 시간메모리
1333778yc11Wind Turbines (EGOI25_windturbines)C++20
11 / 100
4093 ms5492 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int> n1;

vector<int> p;
int f(int x){
    if (x==p[x]) return x;
    return p[x] = f(p[x]);
    }
bool u1(int x, int y){
    if (f(x)==f(y)) return false;
    p[f(x)] = f(y);
    return true;

    }



signed main(){
    int n,m,q;
    cin>>n>>m>>q;
    n1.resize(n);
    bool hi = true;
    vector<pair<int,pair<int,int> > > m1;
    for (int i = 0;i<m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        if (b!=a+1) hi = false;
        n1[i] = c;
        m1.push_back(make_pair(c,make_pair(a,b)));
    }
    if (!hi){



    sort(m1.begin(),m1.end());
    for (int i = 0;i<q;i++){
        int l,r;
        cin>>l>>r;
        p.clear();
        p.resize(n);
        int ans = 0;
        for (int j = 0;j<n;j++){
            if (j>=l and j<=r) {p[j] = l;}
            else p[j] = j;
        }
        for (int j = 0;j<m;j++){
            if (u1(m1[j].second.first,m1[j].second.second)){
                ans = ans+m1[j].first;
            }
        }
        cout<<ans<<"\n";


    }
}
    else {for (int i = 0;i<q;i++){
        int l,r;
        cin>>l>>r;
        int ans = 0;
        for (int j = 0;j<l;j++){
            ans = ans+n1[j];
        }
        for (int j = r;j<n-1;j++) ans = ans+n1[j];
        cout<<ans<<"\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...