Pagini recente » Cod sursa (job #2963829) | Cod sursa (job #3260133) | Cod sursa (job #253512) | Cod sursa (job #2390634) | Cod sursa (job #1460356)
#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#include <time.h>
#include <bitset>
#include <string>
#include <vector>
#include <math.h>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include <limits.h>
#include <algorithm>
#include <deque>
#define inf 0x3f3f3f3f
#define nmax 30010
#define eps 1e-12
#define pi 3.1415926536
using namespace std;
int xx,yy,n,m,z,x,y,i,d[nmax];
vector <pair<int,int> > g[nmax];
queue <int> que;
int main() {
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&x,&y);
/*Bellman Ford*/
for (i=1;i<=m;i++) {
scanf("%d%d%d",&xx,&yy,&z);
g[xx].push_back(make_pair(yy,z));
g[yy].push_back(make_pair(xx,-z));
}
for (i=1;i<=n;i++) d[i]=inf;
d[x]=0; que.push(x);
while (!que.empty()) {
x=que.front(); que.pop();
for (i=0;i<g[x].size();i++)
if (d[x]+g[x][i].second<d[g[x][i].first]) {
d[g[x][i].first]=d[x]+g[x][i].second; que.push(g[x][i].first);
}
}
printf("%d",d[y]);
return 0;
}