Cod sursa(job #1477321)

Utilizator Liviu98Dinca Liviu Liviu98 Data 25 august 2015 21:41:36
Problema PScNv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int NMax=250005;
const int INFINIT=0x3f3f3f3f;
vector<pair<int,int>> Graf[NMax];
queue<pair<int,int> > Q;
int D[NMax],N,M,x,y;

void Read()
{
    scanf("%d%d%d%d",&N,&M,&x,&y);
    for(int i=1;i<=M;i++)
    {
        int a,b,ki;
        scanf("%d%d%d",&a,&b,&ki);
        Graf[a].push_back(make_pair(b,ki));
    }
}

void BellManFord(int StartNod)
{
    memset(D,INFINIT,sizeof(D));
    D[StartNod]=0;
    Q.push(make_pair(StartNod,0));

    while(Q.empty()==false)
    {
        int nod=Q.front().first;
        int nodk=Q.front().second;
        Q.pop();
        for(vector<pair<int,int> >::iterator it=Graf[nod].begin();it!=Graf[nod].end();it++)
        {
            int k=max(nodk,it->second);
            if(k<D[it->first])
            {
                D[it->first]=k;
                Q.push(make_pair(it->first,k));
            }
        }
    }
}

int main()
{
    freopen("pscnv.in","r",stdin);
    freopen("pscnv.out","w",stdout);
    Read();
    BellManFord(x);
    printf("%d",D[y]);
}