#include<cstdio> #include<algorithm> using namespace std; int koszt[2001][2001]; int n; int najm(int x) { int najm1=1000000001; int najm2=1000000001; int b, c; for(int i=0; i<=x; i++) { if(koszt[i][x]<najm1) { najm1=koszt[i][x]; b=i; } if(koszt[i][n-1]<najm2) { najm2=koszt[i][n-1]; c=i; } } if(najm1>najm2+koszt[x+1][n-1]) { int a=najm2+koszt[x+1][n-1]; koszt[c][n-1]=0; koszt[x+1][n-1]=0; return a; } else { int a=koszt[b][x]; koszt[b][x]=0; return a; } } int main() { long long calosc=0; scanf("%d", &n); for(int i=0; i<n; i++) for(int j=i; j<n; j++) scanf("%d", &koszt[i][j]); for(int i=0; i<n; i++) calosc+=(long long)najm(i); printf("%lld", calosc); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<cstdio> #include<algorithm> using namespace std; int koszt[2001][2001]; int n; int najm(int x) { int najm1=1000000001; int najm2=1000000001; int b, c; for(int i=0; i<=x; i++) { if(koszt[i][x]<najm1) { najm1=koszt[i][x]; b=i; } if(koszt[i][n-1]<najm2) { najm2=koszt[i][n-1]; c=i; } } if(najm1>najm2+koszt[x+1][n-1]) { int a=najm2+koszt[x+1][n-1]; koszt[c][n-1]=0; koszt[x+1][n-1]=0; return a; } else { int a=koszt[b][x]; koszt[b][x]=0; return a; } } int main() { long long calosc=0; scanf("%d", &n); for(int i=0; i<n; i++) for(int j=i; j<n; j++) scanf("%d", &koszt[i][j]); for(int i=0; i<n; i++) calosc+=(long long)najm(i); printf("%lld", calosc); } |