Cod sursa(job #863841)

Utilizator misinoonisim necula misino Data 24 ianuarie 2013 10:13:49
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream>
using namespace std;
ifstream f("portal3.in");
ofstream g("portal3.out");
long long i,j,k,t,n,m,c[10],a[10][10];
struct pc{long long x,y;};
pc p[10];
long long abs(int x)
{
    if(x<0)
    return -x;
    return x;
}
long long dist(pc p1,pc p2)
{
    return abs(p1.x-p2.x)+abs(p1.y-p2.y);
}

int main()
{
    f>>t;
    for(;t;--t)
    {
        p[0].x=p[0].y=0;
        f>>n>>m;
        for(i=1;i<=5;i+=2)
        {
            f>>p[i].x>>p[i].y>>p[i+1].x>>p[i+1].y>>c[i];
        }
        p[7].x=n;
        p[7].y=m;
        for(i=0;i<=7;++i)
        for(j=i;j<=7;++j)
        {
            a[i][j]=dist(p[i],p[j]);
            a[j][i]=a[i][j];
        }
        if(c[1]<a[1][2])
        a[1][2]=a[2][1]=c[1];
        if(c[3]<a[3][4])
        a[3][4]=a[4][3]=c[3];
        if(c[5]<a[5][6])
        a[5][6]=a[6][5]=c[5];
        for(k=0;k<=7;++k)
        for(i=0;i<=7;++i)
        for(j=0;j<=7;++j)
        if(i!=j&&i!=k&&a[i][j]>a[i][k]+a[k][j])
        {
            a[i][j]=a[i][k]+a[k][j];
        }
        g<<a[0][7];
    }
    return 0;
}