Pagini recente » Cod sursa (job #444447) | Cod sursa (job #1279214) | Cod sursa (job #2400881) | Cod sursa (job #490740) | Cod sursa (job #176448)
Cod sursa(job #176448)
using namespace std;
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#define N 101
int a[N][N];
int n;
int perm[N][N];
inline int f(int p)
{
int i;
int s=0;
for(i=1;i<=n;++i)
s+=a[i][perm[p][i]];
return s;
}
void init()
{
int i, j;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
perm[i][j]=j;
for(i=1;i<=n;++i) random_shuffle(perm[i]+1, perm[i]+n+1);
}
inline void mutatie(int i)
{
int p=rand()%n+1;
int q=rand()%n+1;
int t=perm[i][p];
perm[i][p]=perm[i][q];
perm[i][q]=t;
}
void solve()
{
init();
int i,j,k, smin=0x3f3f3f3f;
for(i=1;i<=1000;++i)
{
for(j=1;j<=n;++j)
{
for(k=1;k<=n;++k) mutatie(k);
if(smin>f(j)) smin=f(j);
}
}
freopen("cc.out","w",stdout);
printf("%d\n", smin);
}
int main()
{
srand(99);
freopen("cc.in","r",stdin);
scanf("%d\n", &n);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j) scanf("%d ", &a[i][j]);
solve();
return 0;
}