Cod sursa(job #494685)

Utilizator Cristi09Cristi Cristi09 Data 22 octombrie 2010 17:13:20
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<fstream.h>
#define URMAT v[0][ v[1][coada[0][prim]] ]
#define LOCURMAT v[1][ v[1][coada[0][prim]] ]
#define MAX 230049
int v[3][MAX],n,m,x,y,cont,coada[2][MAX],prim,ultim;
void add(int x,int y,int d)
{
	if(!v[0][x])
	{
		v[1][x] = cont;
	}
	else
	{
		v[1][v[0][x]] = cont;
	}
	v[0][x] = cont;
	v[0][cont] = y;
	v[2][cont] = d;
}
int main()
{
	ifstream f("sate.in");
	f>>n>>m>>x>>y;
	int i,j,d,k;
	cont = n+1;
	for(k=1;k<=m;++k,++cont)
	{
		f>>i>>j>>d;
		add(i,j,d);
		++cont;
		add(j,i,d);
	}
	f.close();
	prim = 1;
	coada[0][prim] = x;
	ultim = 2;
	int var;
	while(prim!=ultim)
	{
		while(v[1][coada[0][prim]])
		{
			if(v[1][ URMAT ])
			{				
			var = URMAT;
			coada[0][ultim] = var;
			coada[1][ultim] = coada[1][prim];
			if(var < coada[0][prim])
				coada[1][ultim] -= v[2][ v[1][coada[0][prim]] ];
			else coada[1][ultim] += v[2][ v[1][coada[0][prim]] ];
			
			if(var == y)
			{
				ofstream g("sate.out","w");
				g<<coada[1][ultim];
				g.close();
				return 0;
				
			}
			++ultim;
			}
			v[1][coada[0][prim]] = LOCURMAT;
			
		}
		++prim;
	}
	FILE*g = fopen("sate.out","w");
	fprintf(g,"%d\n",min);
	fclose(g);
	return 0;
}