Cod sursa(job #721578)

Utilizator andunhillMacarescu Sebastian andunhill Data 23 martie 2012 20:15:04
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
#include<cmath>
#include<vector>
using namespace std;

#define INF 1073741824

ifstream f("sate.in");
ofstream g("sate.out");

int N, M, X, Y;
int dist[30001];

vector<pair<int, int> >graph[30001];
typedef vector<pair<int, int> >::iterator it;

void DFS(int node)
{	for(it i = graph[node].begin(); i != graph[node].end(); i++)
	{	if(dist[i->first] != INF) continue;
		
		if(i->first > node)
			dist[i->first] = dist[node] + i->second;
		else dist[i->first] = dist[node] - i->second;
		
		DFS(i->first);
	}
}

int main()
{	int i, x, y, c;
	
	f>>N>>M>>X>>Y;
	for(i = 1; i <= M; i++)
	{	f>>x>>y>>c;
		graph[x].push_back(make_pair(y, c));
		graph[y].push_back(make_pair(x, c));
	}
	for(i = 1; i <= N; i++) dist[i] = INF;
	dist[1] = 0;
	
	DFS(1);
	
	g<<abs(dist[Y] - dist[X]);
}