#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); } |
English