Cod sursa(job #1316980)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 14 ianuarie 2015 13:45:58
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int n,m,pi,pf,cost[1<<15];
queue<int> Q;
vector<pair<int,int> > L[1<<15];
void citire()
{
    int x=0,y=0,c=0;
    scanf("%d%d%d%d",&n,&m,&pi,&pf);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&c);
        L[x].push_back(make_pair(y,c));
        L[y].push_back(make_pair(x,-c));
    }
}
void bfs()
{
    int x=0,nod=0,co=0;
    Q.push(pi);
    cost[pi]=1;
    if(pi==pf) return;
    while(!Q.empty())
    {
        x=Q.front();
        for(vector<pair<int,int> >::iterator it=L[x].begin();it!=L[x].end();it++)
        {
            nod=it->first;
            co=it->second;
            if(cost[nod]==0)
            {
                cost[nod]=cost[x]+co;
                if(nod==pf)
                    return;
                Q.push(nod);
            }
        }
        Q.pop();
    }
}
int main()
{
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    citire();
    bfs();
    printf("%d",cost[pf]-1);
    return 0;
}