Pagini recente » Cod sursa (job #1057131) | Cod sursa (job #2048570) | Cod sursa (job #1117084) | Cod sursa (job #1057307) | Cod sursa (job #3281347)
#include<fstream>
#include<stack>
#include<vector>
using namespace std;
int v[30001];
int distantex[30001];
struct nume{
int nod, distante;
};
stack <int> s;
vector <nume> graf[30001];
void fill(int x){
s.push(x);
while(!s.empty()){
int top=s.top();
s.pop();
for(nume vecin:graf[top]){
if(v[vecin.nod]==0){
distantex[vecin.nod]=distantex[top]+vecin.distante;
v[vecin.nod]=1;
s.push(vecin.nod);
}
}
}
}
int main(){
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y, i, j, d;
fin>>n>>m>>x>>y;
for(int k=1; k<=m; k++){
fin>>i>>j>>d;
nume a;
a.nod=j, a.distante=d;
graf[i].push_back(a);
a.distante=-d, a.nod=i;
graf[j].push_back(a);
}
v[x]=1;
fill(x);
fout<<distantex[y];
return 0;
}