Cod sursa(job #803429)

Utilizator IoanaMarMarussi Ioana IoanaMar Data 27 octombrie 2012 16:08:50
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <queue>
#define mkp make_pair
#define pb push_back

using namespace std;

int D[100005];
vector<int> q;
vector< pair<int,int> > a[100005];
int N, M, X, Y;
int cr = 0;
int nodC, nodN, cost;


int main()
{
int x,y,c;
ifstream f("sate.in");
ofstream g("sate.out");

f>>N>>M>>X>>Y;

for ( int i = 1; i <= M; i++ )
{
    f>>x>>y>>c;
    a[x].pb( mkp( y,c ));
    a[y].pb( mkp( x,c ));
}

q.pb( X );

for ( int i = 0; i < q.size(); i++ )
{
    nodC = q[ i ];
    for ( int j = 0; j < a[ nodC ].size(); j++ )
        if ( !D[ a[nodC][j].first ] )
        {
            nodN = a[nodC][j].first;
            cost = a[nodC][j].second;
            if ( nodN > nodC )
                D[ nodN ] = D[ nodC ] + cost;
            else
                D[ nodN ] = D[ nodC ] - cost;
            q.pb( nodN );
        }
}
g<<D[Y]<<"\n";
return 0;
}