Cod sursa(job #214816)
#include<stdio.h>
int main()
{
readd();
ungar();
return 0;
}
void readd()
{
freopen("cc.in","r",stdin);
freopen("cc.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
}
void ungar()
{
scad_min_lin();
while(find_zero());
finalizare();
}
void scad_min_lin()
{
for(i=1;i<=n;i++)
{
ml[i]=a[i][1];
for(j=2;j<=n;j++)
ml[i]=(a[i][j]<ml[i])?a[i][j]:ml[i];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
if(!cc[j]&&a[i][j]==ml[i])
{ cc[j]=i;break;}
}
}
void ungar()
{
minim=infinit;
for(j=1;j<=n;j++)
{ if(!cc[j])
for(i=1;i<=n;i++)
minim=(a[i][j]<minim)?a[i][j]:minim;
if(!minim)break;
}
if(minim==infinit)return 0;
if(minim)
for(j=1;j<=n;j++)
if(!cc[j])
mc[j]+=minim;