Pagini recente » Cod sursa (job #1723658) | Cod sursa (job #2334546) | Cod sursa (job #1278231) | Cod sursa (job #141589) | Cod sursa (job #524824)
Cod sursa(job #524824)
#include<stdio.h>
#include<vector>
#define N 35000
using namespace std;
vector<pair<int, int> > g[N];
int n,m,i,j,start,end, viz[N], dist[N],a,b,c, que[N], qstart=1, qend=1, akt;
int main()
{
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
scanf("%d%d%d%d", &n, &m, &start, &end);
for(i=1;i<=m;i++)
{
scanf("%d%d%d", &a, &b, &c);
g[a].push_back(make_pair(b,c) );
g[b].push_back(make_pair(a,c) );
}
que[1]=start;
viz[start]=1;
while(qstart<=qend&&!viz[end])
{
akt=que[qstart];
for(i=0;i<g[akt].size();i++)
if(!viz[g[akt][i].first])
{
que[++qend]=g[akt][i].first;
viz[g[akt][i].first]=1;
if(akt<g[akt][i].first)
dist[g[akt][i].first]=dist[akt]+g[akt][i].second;
else dist[g[akt][i].first]=dist[akt]-g[akt][i].second;
}
qstart++;
}
printf("%d", dist[end]);
return 0;
}