Mai intai trebuie sa te autentifici.
Cod sursa(job #2014411)
Utilizator | Data | 23 august 2017 16:30:38 | |
---|---|---|---|
Problema | Sate | Scor | 80 |
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");
int a,b,c,n,m,x,y,v[30001],go,st,dr,i,distanta[30001],hz[30001];
vector< pair<int,int> >h[30001];
int main(){
in >> n >> m >> x >> y;
for( i = 1; i <= m; i ++ ){
in >> a >> b >> c;
h[a].push_back( make_pair( b,c ) );
h[b].push_back( make_pair( a,c ) );
}
v[1] = x;
for( st = 1, dr = 1; st <= dr; st ++ ){
for( i = 0; i < h[v[st]].size(); i ++ ){
if( v[st] < h[v[st]][i].first )
distanta[ h[v[st]][i].first ] = distanta[v[st]] + h[v[st]][i].second;
else
distanta[ h[v[st]][i].first ] = distanta[v[st]] - h[v[st]][i].second;
if( hz[ h[v[st]][i].first ] == 0 ){
hz[ h[v[st]][i].first ] = 1;
dr++;
v[dr] = h[v[st]][i].first;
}
}
}
out<<distanta[y];
return 0;
}