Pagini recente » Cod sursa (job #678764) | Cod sursa (job #2383852) | Cod sursa (job #1462421) | Cod sursa (job #3041337) | Cod sursa (job #3184927)
#include <fstream>
#include <queue>
#include <vector>
#define sz 30000
#define INF 0x3FFFFFFF
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,x,y;
vector <pair<int,int>> v[sz + 5];
int d[sz + 5];
struct mch{
int nod;
int cost;
bool operator < (mch b) const
{
return cost > b.cost;
}
};
priority_queue <mch> q;
int main( )
{
fin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
d[i]=INF;
for(int i=1;i<=m;i++)
{
int x,y,z;
fin>>x>>y>>z;
v[x].push_back({z,y});
v[y].push_back({-z,x});
}
d[x]=0;
q.push({x,0});
while(!q.empty())
{
mch fr = q.top();
q.pop();
if(fr.cost!=d[fr.nod])
continue;
for(auto& i : v[fr.nod])
{
int vec = i.second;
int cost = i.first;
if(fr.cost + cost < d[vec])
d[vec]=fr.cost + cost,q.push({vec,d[vec]});
}
}
fout<<d[y];
}