Cod sursa(job #532953)

Utilizator ConsstantinTabacu Raul Consstantin Data 12 februarie 2011 19:44:59
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<vector>
#include<queue>

using namespace std;
vector<pair<int,int> > v[ 30010 ];
queue<int>q;
int d[ 30010 ],i,j,k,l,m,n,x,y,p;

void citire(){
freopen("sate.in","r",stdin);
scanf("%d %d %d %d",&n,&m,&x,&y);
int a,b,c;
for(i = 1 ; i<= m ;i++)
	{scanf("%d %d %d",&a,&b,&c);
	v[a].push_back(make_pair(b,c));
	v[b].push_back(make_pair(a,c));
	}

}

void bfs(){
	p++;
	q.push(x);
	int nod,X,N;
	while(p)
		{nod = q.front();
		N = v[nod].size();
		for(i = 0;i<N;i++)
			{X = v[nod][i].first;
			if(X != x && d[X] == 0)
				{if(X > nod)
					d[X] = d[nod] + v[nod][i].second;
				else
					d[X] = d[nod] - v[nod][i].second;
				q.push(X);
				p++;
				}
			}
		p--;
		q.pop();
		}
}

void afisare(){
freopen("sate.out","w",stdout);
	printf("%d",d[y]);
}
int main(){
	
citire();
bfs();
afisare();

return 0;}