Cod sursa(job #1438430)

Utilizator GeorgianaMMirlogeanu Georgiana GeorgianaM Data 19 mai 2015 22:28:01
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
#include<vector>
#include<queue>
#define NMAX 30001

using namespace std;

int n,m,x,y;
int cost[NMAX];
queue<int> Q;
vector<pair<int,int> > G[NMAX];

ifstream f("sate.in");
ofstream g("sate.out");
void citire()
{
    int a=0,b=0,d=0;    //d =dist intre a si b
    f>>n>>m>>x>>y;
    for(int i=1; i<=m; i++)
    {
        f>>a>>b>>d;
        G[a].push_back(make_pair(b,d));
        G[b].push_back(make_pair(a,-d));
    }
}
void bfs()
{
    int a=0,nod=0,c=0;
    Q.push(x);
    cost[x]=1;
    if(x==y) return;
    while(!Q.empty())
    {
        a=Q.front();
        for(vector<pair<int,int> >::iterator it=G[a].begin(); it!=G[a].end(); it++)
        {
            nod=it->first;
            c=it->second;
            if(cost[nod]==0)
            {
                cost[nod]=cost[a]+c;
                if(nod==y)
                    return;
                Q.push(nod);
            }
        }
        Q.pop();
    }
}
int main()
{
    citire();
    bfs();
    g<<cost[y]-1<<" ";
    return 0;
}