Cod sursa(job #1737839)

Utilizator theo.stoicanTheodor Stoican theo.stoican Data 5 august 2016 00:51:04
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int n,m,x,y;
vector<vector<pair<int,int> > > g;
vector<bool> visited;
vector<int> d;
queue<int> q;
ifstream fin("sate.in");
ofstream fout ("sate.out");

void bfs()
{
	q.push(x);
	visited[x] = true;
	while (!q.empty())
	{
		int node = q.front();
		q.pop();
		for (int i = 0; i < g[node].size();i++)
		{
			if (!visited[g[node][i].first])
			{
				if (g[node][i].first == y)
				{
					d[y] = d[node] + g[node][i].second;
					return;
				}
				visited[g[node][i].first] = true;
				q.push(g[node][i].first);
				d[g[node][i].first] = d[node] + g[node][i].second;
				//cout<<d[g[node][i].first]<<" "<<g[node][i].first<<"\n";
			}
		}	
	}
}

int main()
{
	fin>>n>>m>>x>>y;
	g.resize(n+1);
	d.resize(n+1, 0);
	visited.resize(n+1,false);
	for (int k = 1; k <= m; k++)
	{
		int i,j,d;
		fin>>i>>j>>d;
		g[i].push_back(make_pair(j,d));
		g[j].push_back(make_pair(i,-d));
	}
	bfs();
	fout<<d[y]<<"\n";
	return 0;
}