1 solutions
-
0
#include<bits/stdc++.h> using namespace std; #define int long long struct edge { int st, ed, wei; } e[1200005]; int p[10025]; edge alle[1000005]; int rs[11]; bool cmp(edge a, edge b) { return a.wei < b.wei; } int find(int x) { if (x == p[x])return p[x]; return p[x] = find(p[x]); } signed main() { // freopen("road2.in","r",stdin); int n, m, k; cin >> n >> m >> k; for (int i = 1; i <= n + k; i++) { p[i] = i; } for (int i = 1; i <= m; i++) { cin >> e[i].st >> e[i].ed >> e[i].wei; } sort(e + 1, e + m + 1, cmp); int po = 1; for (int i = 1; i <= k; i++) { cin >> rs[i]; for (int ii = 1; ii <= n; ii++) { cin >> alle[po].wei ; alle[po].st = i + n; alle[po].ed = ii; po++; } } int total = 0; int counter = 0; for (int i = 1; i <= m; i++) { int a = find(e[i].st); int b = find(e[i].ed); if (a == b)continue; else { p[b] = a; total += e[i].wei; counter++; alle[po].st = e[i].st; alle[po].ed = e[i].ed; alle[po].wei = e[i].wei; po++; if (counter == n - 1) { break; } } } if (k == 0) { cout << total; return 0; } int us[11]; int ttemp = 0, ma = total; sort(alle + 1, alle + po, cmp); // for (int i = 1; i <= po; i++) { // cout << alle[i].st << " " << alle[i].ed << " " << alle[i].wei << endl; // } for (int i = 1; i < (1 << k); i++) { ttemp = 0; int tz = i; int cc = n, counter = 0; for(int j=1;j<=k;j++)us[j]=0; for (int j = 1; j <= k; j++) { if ((tz >> (j - 1)) & 1) { ttemp += rs[j]; us[j] = 1; cc++; } } for (int ii = 1; ii <= n + k; ii++) { p[ii] = ii; } for (int zz = 1; zz < po; zz++) { if(alle[zz].st>n&&us[alle[zz].st-n] == 0){ continue; } //if(alle[zz].st>n&&us[alle[zz].st-n] == 1) cout <<us[alle[zz].st-n]; int a = find(alle[zz].st); int b = find(alle[zz].ed); // cout << a << " " << b << " " << alle[zz].st << " " << alle[zz].ed <<" "<<ttemp<< endl; if (a == b)continue; else { p[b] = a; ttemp += alle[zz].wei; counter++; if (counter == cc - 1) { // cout << total <<" "<< ttemp << endl; ma = min(ma, ttemp); break; } } } } cout << ma; }
- 1
Information
- ID
- 505
- Time
- 2000ms
- Memory
- 512MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 2
- Accepted
- 1
- Uploaded By