Pagini recente » Cod sursa (job #2162868) | Cod sursa (job #3178431) | Cod sursa (job #595877) | Cod sursa (job #2790036) | Cod sursa (job #831462)
Cod sursa(job #831462)
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
int x,y,d,s,f,acum,n,m;
bool viz[100005];
struct drum{ int u, c;}; //unde ajung, cat ma costa
deque <int> q;
vector <drum> l[100050];
int nivel[30000];
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]=true;
for(unsigned int i=0; i<l[acum].size(); ++i){
if(viz[l[acum][i].u]==false){
viz[l[acum][i].u]=true;
nivel[l[acum][i].u]=nivel[acum]+l[acum][i].c;
q.push_back(l[acum][i].u);
}
}
if(acum==f) goto gata;
}
gata:
out<<nivel[f]<<'\n';
return 0;
}