# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
89139 | 2018-12-10T13:58:01 Z | asifthegreat | Kronican (COCI16_kronican) | C++14 | 3 ms | 1404 KB |
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 100000; int parent[N]; struct MST{ int x,y,val; }; bool operator<(MST a , MST b){return a.val < b.val;} vector<MST>v; int Find(int n) { if(n == parent[n])return n; return parent[n] = Find(parent[n]); } void Union(int a,int b) { parent[Find(a)] = Find(b); } int32_t main() { for(int i = 0; i < N;i++)parent[i] = i; int n,k; scanf("%lld%lld",&n,&k); k = n-k; int val; for(int i = 1; i <= n;i++){ for(int j = 1; j <= n;j++){ scanf("%d",&val); if(i == j)continue; else{ v.push_back({i,j,val}); } } } sort(v.begin(),v.end()); int sum = 0; for(auto i: v){ if(Find(i.x)==Find(i.y))continue; if(!k)break; sum += i.val; k--; Union(i.x,i.y); } printf("%lld\n",sum); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 1144 KB | Output is correct |
2 | Incorrect | 2 ms | 1148 KB | Output isn't correct |
3 | Incorrect | 3 ms | 1352 KB | Output isn't correct |
4 | Incorrect | 1 ms | 1404 KB | Output isn't correct |
5 | Incorrect | 2 ms | 1404 KB | Output isn't correct |
6 | Incorrect | 3 ms | 1404 KB | Output isn't correct |
7 | Incorrect | 2 ms | 1404 KB | Output isn't correct |
8 | Incorrect | 3 ms | 1404 KB | Output isn't correct |
9 | Incorrect | 3 ms | 1404 KB | Output isn't correct |
10 | Incorrect | 2 ms | 1404 KB | Output isn't correct |