제출 #1026738

#제출 시각아이디문제언어결과실행 시간메모리
1026738vjudge1Sirni (COCI17_sirni)C++17
42 / 140
612 ms786432 KiB
#include <bits/stdc++.h> using namespace std; int parent[100005], sz[100005]; int Find(int x) { if (x==parent[x]) return x; return parent[x]=Find(parent[x]); } void Union(int a, int b) { a=Find(a), b=Find(b); if (a==b) return; if (sz[a]<sz[b]) swap(a,b); sz[a]+=sz[b]; parent[b]=a; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; int a[n]; for (int i=0;i<n;i++) cin >> a[i]; vector<pair<int, pair<int,int> > > v; for (int i=0;i<n;i++) { for (int j=i+1;j<n;j++) { int dolz=min(a[i]%a[j], a[j]%a[i]); v.push_back({dolz, {i,j}}); } } for (int i=0;i<n;i++) sz[i]=1, parent[i]=i; sort(v.begin(), v.end()); int rez=0; for (auto [dolz, edge]:v) { int a=edge.first, b=edge.second; if (Find(a)!=Find(b)) { rez+=dolz; Union(a, b); } } cout << rez; 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...