Cod sursa(job #360749)

Utilizator allynaAlina S allyna Data 1 noiembrie 2009 21:28:11
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> a[30002];
vector <int> v[30002];
int d[30002],i,num,j,in=1,sf,u,y1,n,m,x,y,c[30002],xx,yy;;
char sat[50];
int main()
{
	freopen("sate.in","r",stdin);
	freopen("sate.out","w",stdout);
	scanf("%d%d%hd%hd\n",&n,&m,&x,&y);
	
	for(i=1;i<=m;i++)
	{
		gets(sat);
		xx=0;
		yy=0;
		num=0;
		for(j=0;sat[j]!=' ';j++)
			xx=xx*10+sat[j]-'0';
		for(j++;sat[j]!=' ';j++)
			yy=yy*10+sat[j]-'0';
		for(j++;sat[j];j++)
			num=num*10+sat[j]-'0';
		a[xx].push_back(yy);
		a[yy].push_back(xx);
		v[xx].push_back(num);
		v[yy].push_back(num);
		c[++sf]=x;
		}
	while(d[y]==0)
	{
		x=c[++in];
		u=a[x].size();
		for(i=0;i<u;i++)
		{
			y1=a[x][i];
			if(d[y1]==0)
			{
				num=v[x][i];
				if(x<y1)
					d[y1]=d[x]+num;
				else
					d[y1]=d[x]-num;
				c[++sf]=y1;
			}
		}
	}
printf("%d\n",d[y]);
	return 0;
}