Cod sursa(job #1383063)

Utilizator robertstrecheStreche Robert robertstreche Data 9 martie 2015 21:06:04
Problema PScNv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#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);
}