Cod sursa(job #667908)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 23 ianuarie 2012 21:48:57
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int n,m,minim=0;
pair<int,int> x,y,z;
int h[100][100];

int dist(pair<int,int> x,pair<int,int> y)
{
	return (abs(x.first-y.first)+abs(x.second-y.second))-2;
}

void citire()
{
	minim=1<<30;
	scanf("%d %d",&n,&m);
	for(int i=0;i<3;i++)
	{
		int k;
		scanf("%d %d %d %d %d",&x.first,&x.second,&y.first,&y.second,&k);
		h[x.first][x.second]=k;
		h[y.first][y.second]=k;
		//cout<<x.first<<" "<<x.second<<" "<<y.first<<" "<<y.second<<" "<<k<<endl;
		//cout<< " SI distanta prin portal : "<<dist( make_pair(0,0),x ) + k + dist(make_pair(n,m),y)<<endl ;
		//cout<<" Distanta 1 : "<<  dist( make_pair(0,0),x ) << " Distanta 2 : "<<dist(make_pair(n,m),y) <<endl;
		//cout<<" Varianta 2 : " << dist( make_pair(n,m),x ) <<" "<< dist(make_pair(0,0),y)<<endl;
		minim=min(minim, min ( ( dist( make_pair(0,0),x ) + k + dist(make_pair(n,m),y) ) ,
			( dist( make_pair(n,m),x ) + k + dist(make_pair(0,0),y) ) ) );
	}
}

int main()
{
	freopen("portal3.in","r", stdin);
	freopen("portal3.out","w", stdout);
	int t;
	scanf("%d",&t);
	for(int i=1;i<=t;i++)
	{
		citire();
		//printf("%d\n",dist( make_pair(0,0),make_pair(n,m) ) );
		minim=min(minim,dist( make_pair(0,0),make_pair(n,m) ) );
		printf("%d\n",minim);
		
	}
	/*for(int i=1;i<=n;i++)
	{
		cout<<endl;
		for(int j=1;j<=m;j++)
			cout<<h[i][j]<<" ";
	}*/
	return 0;
}