Pagini recente » Cod sursa (job #2616109) | Cod sursa (job #1166805) | Cod sursa (job #2896216) | Cod sursa (job #3154371) | Cod sursa (job #637997)
Cod sursa(job #637997)
#include<fstream>
#include<vector>
#include<queue>
#define nr 9
#define mult 1000000005
using namespace std;
ifstream in("portal3.in");
ofstream out("portal3.out");
int tst;
long long dist[nr][nr], dm[nr], lng;
struct nod
{
long long x;
long long y;
}gr[nr];
queue<int>q;
void getdist()
{
int i, crt;
q.push(0);
dm[0]=0;
while(!q.empty() )
{
crt = q.front();
q.pop();
for(i=0; i<9; i++)
if(dm[crt] + dist[crt][i] < dm[i])
{
dm[i] = dm[crt] + dist[crt][i];
q.push(i);
}
}
out<<dm[7];
}
long long md(long long k)
{
if(k<0)
return -k;
return k;
}
long long mn(long long k, long long z)
{
if(k < z)
return k;
return z;
}
int main()
{
int i,j;
in>>tst;
for(;tst;tst--)
{
for(i=0; i<=7; i++)
{ for(j=1; j<=7; j++)
dist[i][j] = mult;
dm[i] = mult;
}
in>>gr[7].x>>gr[7].y;
in>>gr[1].x>>gr[1].y>>gr[2].x>>gr[2].y>>dist[1][2];
dist[2][1]=dist[1][2];
in>>gr[3].x>>gr[3].y>>gr[4].x>>gr[4].y>>dist[3][4];
dist[4][3]=dist[3][4];
in>>gr[5].x>>gr[5].y>>gr[6].x>>gr[6].y>>dist[5][6];
dist[6][5]=dist[5][6];
for(i=0; i<=7; i++)
for(j=1; j<=7; j++)
{
dist[i][j] = mn(dist[i][j], md(gr[i].x-gr[j].x)+md(gr[i].y-gr[j].y) );
dist[j][i] = dist[i][j];
}
getdist();
}
in.close();
out.close();
return 0;
}