Pagini recente » Cod sursa (job #677840) | Cod sursa (job #520982) | Cod sursa (job #353059) | Cod sursa (job #1746511) | Cod sursa (job #1383063)
#include <cstdio>
#include <vector>
#include <queue>
#define INF 1001
#define NMAX 250005
using namespace std;
int best[NMAX];
int n,m,x,y,z,nod1,nod2,dist;
priority_queue <pair <int,int > >q;
vector <pair <int ,int > >v[NMAX];
vector <pair <int ,int > >::iterator it;
int main()
{
freopen("pscnv.in","r",stdin);
freopen("pscnv.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&nod1,&nod2);
for (int i=1;i<=n;i++)best[i]=INF;
for (int i=1;i<=m;i++)
{
scanf("%d %d %d",&x,&y,&z);
v[x].push_back(make_pair(y,z));
}
best[nod1]=0;
q.push(make_pair(0,nod1));
while (q.size())
{
int nod=q.top().second;
q.pop();
for (it=v[nod].begin();it!=v[nod].end();it++)
{
if (best[nod]>(*it).second)dist=best[nod];
else dist=(*it).second;
if (dist<best[(*it).first])
{
q.push(make_pair(-dist,(*it).first));
best[(*it).first]=dist;
}
}
}
printf("%d",best[nod2]);
fclose(stdin);
fclose(stdout);
}