Pagini recente » Cod sursa (job #1398958) | Cod sursa (job #600886) | Cod sursa (job #1466913) | Cod sursa (job #1538075) | Cod sursa (job #1303262)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
vector< vector< pair<int,int> > > a;
vector<int> d;
queue<int> q;
void bfs(int x)
{
d[x]=0;
q.push(x);
while(!q.empty())
{
int k=q.front();q.pop();
for(vector< pair<int,int> >::iterator i=a[k].begin();i!=a[k].end();i++)
if(d[i->first]==numeric_limits<int>::max())
{
if(i->first > k)d[i->first]=d[k]+i->second;
else d[i->first]=d[k]-i->second;
q.push(i->first);
}
}
}
int main()
{
int n,m,p,q,x,y,c;
in>>n>>m>>p>>q;
if(p>q)swap(p,q);
a=vector< vector< pair<int,int> > >(n+1);
d=vector<int>(n+1,numeric_limits<int>::max());
for(;m;m--)
{
in>>x>>y>>c;
a[x].push_back(make_pair(y,c));
a[y].push_back(make_pair(x,c));
}
bfs(p);
out<<d[q];
return 0;
}