Pagini recente » Cod sursa (job #586349) | Cod sursa (job #3127333) | Cod sursa (job #2998499) | Cod sursa (job #1969122) | Cod sursa (job #530457)
Cod sursa(job #530457)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
struct nod{
int v,cost;
};
vector <nod> a[1<<16];
int n,m,X,Y,p=0,u=0;
int INF=1<<30;
int coada[1<<16];
int costf[1<<16];
void citire(){
int k,l,c;
nod aux;
while(m--){
in>>k;
in>>l;
in>>c;
aux.v=l;
if(k>l){
aux.cost=(-1)*c;
}
else{
aux.cost=c;
}
a[k].push_back(aux);
aux.v=k;
aux.cost=-aux.cost;
a[l].push_back(aux);
}
}
void BF(){
int x,i,y,c;
u++;
coada[u]=X;
p++;
while(p<=u){
x=coada[p++];
for(i=0;i<a[x].size();i++){
y=a[x][i].v;
c=a[x][i].cost;
if(costf[x]+c>=costf[y])
continue;
u++;
coada[u]=a[x][i].v;
costf[a[x][i].v] = costf[x]+a[x][i].cost;
}
}
}
int main(){
int i;
in>>n>>m>>X>>Y;
citire();
for(i=i;i<=n;i++){
if(i!=X)
costf[i]=INF;
}
BF();
out<<costf[Y];
return 0;
}