Cod sursa(job #524824)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 23 ianuarie 2011 11:06:12
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<vector>
#define N 35000

using namespace std;

vector<pair<int, int> > g[N];
int n,m,i,j,start,end, viz[N], dist[N],a,b,c, que[N], qstart=1, qend=1, akt;



int main()
{
	freopen("sate.in", "r", stdin);
	freopen("sate.out", "w", stdout);
	scanf("%d%d%d%d", &n, &m, &start, &end);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d", &a, &b, &c);
		g[a].push_back(make_pair(b,c) );
		g[b].push_back(make_pair(a,c) );
	}
	que[1]=start;
	viz[start]=1;
	while(qstart<=qend&&!viz[end])
	{
		akt=que[qstart];
		for(i=0;i<g[akt].size();i++)
			if(!viz[g[akt][i].first])
			{
				que[++qend]=g[akt][i].first;
				viz[g[akt][i].first]=1;
				if(akt<g[akt][i].first)
				dist[g[akt][i].first]=dist[akt]+g[akt][i].second;
				else dist[g[akt][i].first]=dist[akt]-g[akt][i].second;
			}
		qstart++;
	}
	printf("%d", dist[end]);
	return 0;
}