Cod sursa(job #818328)

Utilizator vladstoickvladstoick vladstoick Data 17 noiembrie 2012 15:01:44
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<fstream>
#include<queue>
using namespace std;
struct muchie
{
    int vf,cost;
};
muchie makeMuchie(int vf,int cost)
{
    muchie a;
    a.vf=vf;
    a.cost=cost;
    return a;
}
const int N=30001;
int n , m , pozstart ,pozfinal, cost[N],x,y;
vector <muchie> a[N];
ifstream in ("sate.in");
ofstream out("sate.out");
queue <int> coada;
void leeus()
{
    coada.push(pozstart);
    while(!coada.empty())
    {
        int elem=coada.front();
        coada.pop();
        for(int i=0;i<a[elem].size();i++)
        {
            int muchie=a[elem][i].vf;
            int costMuchie=a[elem][i].cost;
            int costnou=cost[elem];
            if(muchie<elem)
                costnou-=costMuchie;
            else
                costnou+=costMuchie;
            if(cost[muchie]<costnou || cost[muchie]==-1)
            {
                cost[muchie]=costnou;
                coada.push(muchie);
            }
        }
    }
}
int main()
{
    in>>n>>m>>pozstart>>pozfinal;
    for(int i=1;i<=m;i++)
    {
        int x,y,cost;
        in>>x>>y>>cost;
        a[x].push_back(makeMuchie(y,cost));
        a[y].push_back(makeMuchie(x,cost));
    }
    for(int i=1;i<=n;i++)
        cost[i]=-1;
    leeus();
    out<<cost[pozfinal]+1;

}