Cod sursa(job #1002816)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 28 septembrie 2013 21:00:25
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
vector <pair <int,int> > v[30010];
int m,n,nr,x,y,X,Y,dist[30010],lista[30010];
void bfs()
{

    int i,j,nod,ok=1;
    lista[1]=X;
    dist[X]=0;
    nr=1;

    for(i=1;i<=nr,ok==1;i++) {
        nod=lista[i];
        for(j=0;j<v[nod].size();j++)
            if(!dist[v[nod][j].first]) {
                lista[++nr]=v[nod][j].first;
                dist[v[nod][j].first]=dist[nod]+v[nod][j].second;
                if(v[nod][j].first==Y)
                    ok=0;
                }
        }

}

int main ()
{
    int aux,i,c;
    in>>n>>m>>X>>Y;
    if(X>Y)
        {
            aux=X;
            X=Y;
            Y=aux;
        }
    for(i=1;i<=m;i++){
    in>>x>>y>>c;
        v[x].push_back(make_pair(y,c));
        v[y].push_back(make_pair(x,-c));
    }

    bfs();
    out<<dist[Y];
    in.close();
    out.close();
    return 0;
}