Cod sursa(job #831449)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 8 decembrie 2012 17:26:17
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
int x,y,d,s,f,acum,n,m;
int viz[100005];
struct drum{ int u, c;}; //unde ajung, cat ma costa
deque  <int> q;
vector <drum> l[100050];
vector <int> nivel(30000,-1);
int main(){
	ifstream in("sate.in"); ofstream out("sate.out");
	in>>n>>m>>s>>f; //n sate, m drumuri
	for(int i=1;i<=m;++i){
		in>>x>>y>>d;
		l[x].push_back(drum{y, d});
		l[y].push_back(drum{x,-d});
	}
	q.push_back(s); viz[s]=1; nivel[s]=0;
	while(!q.empty()){
		acum=q.front(); q.pop_front();
		viz[acum]=1;
		for(unsigned int i=0; i<l[acum].size(); ++i){
			if(viz[l[acum][i].u]==0){
				viz[l[acum][i].u]=1;
				nivel[l[acum][i].u]=nivel[acum]+l[acum][i].c;
				q.push_back(l[acum][i].u);
			}
		}
	}
	out<<nivel[f]<<'\n';
	return 0;
}