Cod sursa(job #742106)

Utilizator mihai995mihai995 mihai995 Data 28 aprilie 2012 15:16:03
Problema Paznici2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
using namespace std;

const int N = 205;
int cost[N][N], paznic[N], n;

ifstream in("paznici2.in");
ofstream out("paznici2.out");

inline bool should_swap(int x, int y, int z, int t)
{
    return cost[x][t] + cost[y][z] < cost[x][z] + cost[y][t];
}

inline void sch(int& a, int& b)
{
    int c = a;
    a = b;
    b = c;
}

int cost_min(int cost[N][N], int nrP)
{
    for (int i = 1 ; i <= nrP ; i++)
    {
        paznic[i] = i;

        for (int j = 1 ; j < i ; j++)
            if (should_swap(paznic[i], paznic[j], i, j))
                sch(paznic[i], paznic[j]);
    }

    int rez = 0;

    for (int i = 1 ; i <= n ; i++)
        rez += cost[paznic[i]][i];

    return rez;
}

int main()
{
    in >> n;

    for (int i = 1 ; i <= n ; i++)
        for (int j = 1 ; j <= n ; j++)
            in >> cost[i][j];

    out << cost_min(cost, n) << "\n";
    return 0;
}