Cod sursa(job #1949744)

Utilizator Sergiu1256Ionita Sergiu1256 Data 2 aprilie 2017 12:53:51
Problema Sate Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,x,y,c,viz[30001],d[30001],v[30001],nod1,nod2;
vector< pair < int , int > >my[30001];
queue<int> q;

void bfs(){
		int nod,vecin,cost;
		vector< pair < int , int > >::iterator it;
		q.push(1);
		v[1]=1;
		viz[1]=1;
	while(!q.empty()){
						nod=q.front();
						viz[nod]=1;
						q.pop();
								for (it=my[nod].begin();it!=my[nod].end();it++){
																				vecin=(*it).first;
																				cost=(*it).second;
																				if (!viz[vecin]){
																									if (vecin<nod)  v[vecin]=v[nod]-cost;
																									else v[vecin]=v[nod]+cost;
																								q.push(vecin);
																								}
																				}
					}
	}
int main(){
		fin>>n>>m>>nod1>>nod2;
		for (int i (1);i<=m;i++){
									fin>>x>>y>>c;
									my[x].push_back(make_pair(y,c));
									my[y].push_back(make_pair(x,c));
								}
		bfs();
		fout<<abs(v[nod1]-v[nod2])<<" ";
}