Pagini recente » Cod sursa (job #3278960) | Cod sursa (job #627165)
Cod sursa(job #627165)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
using namespace std;
const int nmax = 30011;
int n, m, alfa, beta;//alfa = nodul de pornir; beta = nodul destinatie;
vector<pair<int,int> > gf[nmax];
bitset<nmax> viz;
long d[nmax];
queue<int> q;
ifstream f("sate.in");
ofstream g("sate.out");
void citeste(){
f>>n>>m>>alfa>>beta;
for(int i=1; i<=m; ++i){
int x, y, c;
f>>x>>y>>c;
gf[x].push_back(make_pair(y,c));
gf[y].push_back(make_pair(x,-c));
}
}
void bf(){
for(int i=1; i<=n; ++i) d[i] = 20000111;
d[alfa] = 0;
for(q.push(alfa); q.size(); ){
int nod = q.front();
viz[nod] = 0;
q.pop();
for(unsigned i = 0; i < gf[nod].size(); ++i){
int vecin = gf[nod][i].first;
int cost = gf[nod][i].second;
if (d[vecin] > d[nod] + cost){
d[vecin] = d[nod] + cost;
if (viz[vecin]==0) {
viz[vecin] = 1;
q.push(vecin);
}
}
}
}
}
void scrie(){
g<<d[beta]<<"\n";
}
int main(){
citeste();
bf();
scrie();
f.close();
f.close();
return 0;
}