Cod sursa(job #767020)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 12 iulie 2012 17:03:55
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
struct s{int v,c;};
vector <s> a[75001];
int n,m,X,Y,x,y,dist[75001];
void alg( int nod)
{
	int i, cost, nodc;
	queue <int >q;
	q.push(nod);
	while (!q.empty())
	{
		nod=q.front();
		q.pop();
		for (i=0;i<a[nod].size();i++)
		{
			nodc=a[nod][i].v;
			cost=a[nod][i].c;
			if (nodc<nod)
				cost=cost-2*cost;
			if (dist[nodc]==0 || dist[nodc]>dist[nod]+cost)
			{
				dist[nodc]=dist[nod]+cost;
				q.push(nodc);
			}
		}
	}
}
int main(void)
{
	fstream f,g;
	f.open("sate.in",ios::in);
	g.open("sate.out",ios::out);
	f>>n>>m>>X>>Y;
	int i;
	s z,l;
	for (i=1;i<=m;i++)
	{
		f>>x>>z.v>>z.c;
		l.v=x;
		l.c=z.c;
		a[x].push_back(z);
		a[z.v].push_back(l);
	}
	alg(X);
	g<<dist[Y];
}