Cod sursa(job #499171)

Utilizator AnDrEwBoYA Andrei AnDrEwBoY Data 8 noiembrie 2010 22:08:43
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
queue<int> Q;
vector<pair<int,int> > V[1<<15];
int n,m,x,y,a,b,c,cost[1<<15];
void read(),solve();
int main()
{
	read();
	solve();
	return 0;
}
void read()
{
	freopen("sate.in","r",stdin);
	freopen("sate.out","w",stdout);
	scanf("%d%d%d%d",&n,&m,&x,&y);
	for(;m;m--)
		scanf("%d%d%d",&a,&b,&c),V[a].push_back(make_pair(b,c)),V[b].push_back(make_pair(a,-c));
}
void solve()
{
	vector<pair<int,int> >::iterator it;
	int q;
	Q.push(x);cost[x]=1; 
	while(Q.size())
	{
		q = Q.front();
		for(it=V[q].begin();it!=V[q].end();it++)
		{
			if(!cost[it->first])
			{
				cost[it->first]=cost[q]+it->second;		
				if(it->first == y) { printf("%d\n",cost[y]-1); return; }				
				Q.push(it->first);
			}					
		}
		Q.pop();
	} 
}