Cod sursa(job #1122894)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 25 februarie 2014 21:10:00
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<fstream>
#define NMAX 10

using namespace std;

ifstream f("portal3.in");
ofstream g("portal3.out");

struct portal
{
    long long x, y;
}a[NMAX];
long long n, m, best[NMAX][NMAX], c[4];

long long modul(int x)
{
    if (x<0) return -x;
    return x;
}

void Citeste()
{
    int i;
    f>>n>>m;
    a[7].x=n; a[7].y=m;
    f>>a[1].x>>a[1].y>>a[2].x>>a[2].y>>c[1];
    f>>a[3].x>>a[3].y>>a[4].x>>a[4].y>>c[2];
    f>>a[5].x>>a[5].y>>a[6].x>>a[6].y>>c[3];
}

void Initializeaza()
{
    int i, j;
    for (i=0; i<8; ++i)
        for (j=0; j<8; ++j)
            if (i!=j) best[i][j]=modul(a[i].x-a[j].x)+modul(a[i].y-a[j].y);
}

void Roy_Floyd()
{
    int i, j, k;

    for (k=0; k<8; ++k)
        for (i=0; i<8; ++i)
            for (j=0; j<8; ++j)
                if (i!=j && i!=k && j!=k)
                    best[i][j]=min(best[i][j], best[i][k]+best[k][j]);
}

int main()
{
    int T;
    f>>T;
 //   a[0].x=a[0].y=0; a[7].x=n; a[7].y=m;
    while (T--)
    {
        Citeste();

        Initializeaza();

        best[1][2]=best[2][1]=c[1];//min(best[1][2], c[1]);
        best[3][4]=best[4][3]=c[2];//min(best[3][4], c[2]);
        best[5][6]=best[6][6]=c[3];//min(best[5][6], c[3]);

        Roy_Floyd();

        g<<best[0][7]<<"\n";
    }
    f.close();
    g.close();
    return 0;
}