Pagini recente » Cod sursa (job #2524361) | Cod sursa (job #2878551) | Cod sursa (job #1056922) | Cod sursa (job #2282381) | Cod sursa (job #1067777)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int NMAX = 30001;
const int MMAX = 100025;
int n,m, start, finish, total = 0;
int viz[NMAX];
struct det{
int nr, dist;
};
vector<det> sate[NMAX];
queue<int> coada;
void get_input(){
ifstream in("sate.in");
in>>n>>m>>start>>finish;
cout<<start<<" "<<finish;
for (int i = 0; i < m; ++i){
int x,y,d;
in>>x>>y>>d;
det per;
per.nr = y;
per.dist = d;
sate[x].push_back(per);
per.nr = x;
per.dist = -d;
sate[y].push_back(per);
}
in.close();
}
int bfs(){
coada.push(start);
viz[start] = 1;
while (!coada.empty() && !viz[finish]){
int nod = coada.front();
int sz = sate[nod].size();
coada.pop();
for (int i = 0; i < sz; ++i){
if (!viz[ sate[nod][i].nr]) {
viz [ sate[nod][i].nr] = viz[nod] + sate[nod][i].dist;
coada.push(sate[nod][i].nr);
}
}
}
return viz[finish] - 1;
}
int main(){
get_input();
ofstream out("sate.out");
out<<bfs();
out.close();
return 0;
}