Pagini recente » Cod sursa (job #174961) | Cod sursa (job #2912754) | Cod sursa (job #1684791) | Cod sursa (job #125816) | Cod sursa (job #831449)
Cod sursa(job #831449)
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
int x,y,d,s,f,acum,n,m;
int viz[100005];
struct drum{ int u, c;}; //unde ajung, cat ma costa
deque <int> q;
vector <drum> l[100050];
vector <int> nivel(30000,-1);
int main(){
ifstream in("sate.in"); ofstream out("sate.out");
in>>n>>m>>s>>f; //n sate, m drumuri
for(int i=1;i<=m;++i){
in>>x>>y>>d;
l[x].push_back(drum{y, d});
l[y].push_back(drum{x,-d});
}
q.push_back(s); viz[s]=1; nivel[s]=0;
while(!q.empty()){
acum=q.front(); q.pop_front();
viz[acum]=1;
for(unsigned int i=0; i<l[acum].size(); ++i){
if(viz[l[acum][i].u]==0){
viz[l[acum][i].u]=1;
nivel[l[acum][i].u]=nivel[acum]+l[acum][i].c;
q.push_back(l[acum][i].u);
}
}
}
out<<nivel[f]<<'\n';
return 0;
}