Pagini recente » Cod sursa (job #1449410) | Cod sursa (job #301781) | Cod sursa (job #1166096) | Cod sursa (job #1516790) | Cod sursa (job #1094621)
#include<fstream>
#include<vector>
using namespace std;
int n,m,start,fin,dist[30010],list[30010],nr;
vector <pair <int,int> > v[30010];
void citire() {
ifstream in("sate.in");
int i,x,y,c;
in>>n>>m>>start>>fin;
if(start>fin)
swap(start,fin);
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));
}
in.close();
}
void solve() {
int i,j,ok,nod;
list[1]=start;
dist[start]=0;
nr=1;
ok=1;
for(i=1;i<=nr,ok==1;i++) {
nod=list[i];
for(j=0;j<v[nod].size();j++) {
if(!dist[v[nod][j].first]) {
nr++;
list[nr]=v[nod][j].first;
dist[v[nod][j].first]=dist[nod]+v[nod][j].second;
if(v[nod][j].first==fin)
ok=0;
}
}
}
}
void afisare() {
ofstream out("sate.out");
out<<dist[fin]<<'\n';
out.close();
}
int main() {
citire();
solve();
afisare();
return 0;
}