Cod sursa(job #2308498)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 27 decembrie 2018 11:38:18
Problema Sate Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
	
#include <bits/stdc++.h>
#define F first
#define S second
 
using namespace std;
 
int n,m,x,y;
bool V[30010];
vector <pair<int,int> > A[30010];
pair<int,int> p;
 
ifstream fin("sate.in");
ofstream fout("sate.out");
 
int BFS(int x, int y){
	queue <pair<int,int> > q;
	p.F=x;p.S=0;
	q.push(p);
	int sol=10000000;
	while(!q.empty()){
		int cn=q.front().F;
		if(cn!=y){
			for(int i=0;i<A[cn].size();i++){
				int s=q.front().S;
				p.F=A[cn][i].F;
				if(cn>p.F)s-=A[cn][i].S;
				else s+=A[cn][i].S;
				p.S=s;
				if(!V[A[cn][i].F]){
					q.push(p);
				}else if(A[cn][i].S>p.S){
					V[A[cn][i].F]=0;
					q.push(p);
				}
			}
			V[cn]=1;
		}else sol=min(q.front().S,sol);
		if(!q.empty())q.pop();
	}	
	return sol;
}
 
int main(){
	fin>>n>>m>>x>>y;
	memset(V,0,n);
	for(int i=0;i<m;i++){
		int xc,yc,vc;
		fin>>xc>>yc>>vc;
		p.F=yc;p.S=vc;
		A[xc].push_back(p);
		p.F=xc;
		A[yc].push_back(p);
	}
	fout<<BFS(x,y);
	return 0;
}